Hilfe bei Anagrammm-Programm!!!



  • Dies ist zwar kein C-Code, sollte aber schnell von dir dorthin
    übersetzt werden können.

    Ein bißchen unfair, weil man ein Makro-Guru sein müßte, um das durch den
    Compiler zu bekommen (wenn es überhaupt geht, aus : ein { zu machen).
    Fairer wäre sowas:

    #include <stdio.h>
    
    #define begin {
    #define end }
    #define for(var, start, end) for(int var = start; var <= end; var++)
    #define print(str) printf("%s\n", str)
    
    int main(int ac, char **av)
    {
        char text[3] = {'a', 'b', 'c'};
        char buf[4] = {0, 0, 0, 0};
    
        for(i, 0, 2)
        begin
            buf[0] = text[i];
            for(j, 0, 2)
            begin
                if (buf[0] == text[j]) continue;
                buf[1] = text[j];
                for(k, 0, 2)
                begin
                    if (buf[0] == text[k] || buf[1] == text[k]) continue;
                    buf[2] = text[k];
                    print(buf);
                end
            end
        end
    
        return 0;
    }
    

    🙂



  • ich bin recht freundlich, was Makros anbetrifft, aber das

    bgdnoy schrieb:

    #define begin {
    #define end }
    #define for(var, start, end) for(int var = start; var <= end; var++)
    #define print(str) printf("%s\n", str)
    

    finde ich schon kriminell. Vor allem die for Ersetzung kann auf Dauer nur Ärger bringen.



  • Ich denke, die Intention war nicht, ein Beispiel zu posten, das man möglichst schnell durch den Compiler jagen kann, sondern eines, dass C&P effektiv verhindern und somit den Lernfaktor erhöhen kann. Nett.

    @supertux: Poste doch sowas nicht, am Ende gewöhnt sich das noch jemand an... 😉 Das erinnert mich ziemlich an die Story, die unser Chef alle paar Monate erzählt. Er war damals Pascal-Programmierer, der einen Auftrag bekam, was in C zu schreiben. Und er hat ich durch genau solche Makros seine gewohnte Arbeitsumgebung geschaffen. Auch 'ne Möglichkeit... 😮



  • _matze schrieb:

    @supertux: Poste doch sowas nicht, am Ende gewöhnt sich das noch jemand an... 😉

    ich hab es nicht gepostet, ich habe es (und damit bgdnoy) kritisiert ⚠



  • Oh stimmt, war in seinem Code. Hatte ich irgendwie nicht gesehen... 🤡



  • 🙄
    Hab ich euch nicht bewiesen, daß man mit dem Pseudocode von oben ganz ohne
    Verständnis ein fertiges C-Programm bauen kann?
    Für wie dumm haltet ihr denn den OP?

    Also noch dazu mein Schwur: ich hab bis jetzt kein bißchen drüber nachgedacht,
    wie der Code von mcr funktioniert, sondern nur bewiesen, daß das gar nicht nötig ist.
    (Man also nur mehr über die Syntax nachdenken muß, dabei sollte der "Lernfaktor" doch
    möglichst auf die Semantik abzielen, oder?)

    EDIT:

    Das erinnert mich ziemlich an die Story, die unser Chef alle paar Monate erzählt.

    Frag ihn mal, ob er die aus dem K&R gestohlen hat!



  • _matze schrieb:

    Ich denke, die Intention war nicht, ein Beispiel zu posten, das man möglichst schnell durch den Compiler jagen kann, sondern eines, dass C&P effektiv verhindern und somit den Lernfaktor erhöhen kann. Nett.

    @supertux: Poste doch sowas nicht, am Ende gewöhnt sich das noch jemand an... 😉 Das erinnert mich ziemlich an die Story, die unser Chef alle paar Monate erzählt. Er war damals Pascal-Programmierer, der einen Auftrag bekam, was in C zu schreiben. Und er hat ich durch genau solche Makros seine gewohnte Arbeitsumgebung geschaffen. Auch 'ne Möglichkeit... 😮

    Hallo zusammen,

    Matze hat schon Recht. Ich wollte keinen Code schicken, der perfekt
    funktioniert, da er dadurch nichts gelernt hätte. Daher habe ich
    die Vorgehensweise in einer Art Pseudocode (werde ich das nächste mal dabei
    schreiben) beschrieben. Lediglich die If-Anweisungen sind in C geschrieben.

    Ich selbst bin kein Freund von Makros.

    Gruß mcr



  • bgdnoy schrieb:

    🙄
    Hab ich euch nicht bewiesen, daß man mit dem Pseudocode von oben ganz ohne
    Verständnis ein fertiges C-Programm bauen kann?
    Für wie dumm haltet ihr denn den OP?

    Hast du, ganz toll! 🙄

    Wenn man nochmal darüber nachdenkt, hast du es eigentlich nicht. Denn zumindest ist das Wissen, wie man #define anwendet, dafür nötig. Das hat zwar nicht viel mit dem Verständnis des Programmablaufs zu tun, dennoch kann so ein Beispiel wie von mcr dafür sorgen, dass er auch darüber nachdenkt, während er es für sich umsetzt. Ich halte das durchaus für eine nette Idee.

    Und nicht jeder ist gleich in der Lage, "#define begin {" zu notieren. Gerade Anfänger haben oft noch nicht die Riesen-Ahnung, was Präprozessor-Anweisungen angeht. Und nein, ich halte den OP mit Sicherheit nicht für dumm! Die (verständliche) Unwissenheit eines Anfängers sollte man nicht mit Dummheit verwechseln, und das habe ich weder ausdrücklich gesagt noch angedeutet. Diesen Vergleich hast du ins Spiel gebracht.



  • Ihr habt recht, ich war ein wenig forsch. Man sollte halt nach Mitternacht beim Debuggen bleiben...

    Ich wollte ja eigentlich nur einen Scherz machen, das ist aber scheinbar schiefgegangen. 😉
    Zur Entschuldigung: wenn ich so einen Pseudocode sehe, will ich unbedingt wissen, ob er auch
    funktioniert... und da ist die einzige Instanz eben ein Compiler/Interpreter, weil mein
    Gehirn viel zu ambiguitiv denkt.



  • bgdnoy schrieb:

    weil mein Gehirn viel zu ambiguitiv denkt.

    das wort verstehe ich nicht. was ist "ambiguitiv" und was ist der unterschied zu "ambig" und kann man ambuguitiv oder ambig denken und wenn ja, woran erkenne ich das, falls es mir mal passiert?



  • Keine Ahnung. Ambig war nicht was ich sagen wollte. Ich hatte rückblickend eher sowas wie den Unterschied
    zwischen pathologisch und pathogen im Kopf, keine Ahnung, warum ich dann nicht ambigugen oder so ähnlich gesagt habe.
    Das ist aber ein gutes Beispiel für die Funktionsweise meines Gehirns, sagen wir mal statt
    ambiguitiv einfach: seltsam.



  • bgdnoy schrieb:

    Ich wollte ja eigentlich nur einen Scherz machen, das ist aber scheinbar schiefgegangen. 😉

    Dir sei vergeben! 😉


Anmelden zum Antworten