Bruteforce Algorithmus, Fortschritt nur bei Aufruf



  • zeigerzeiger schrieb:

    #include <cstring>
    ...
    

    cstring 😕

    ...oder so vielleicht

    #include <stdio.h>
    #include <string.h>
    
    void changeString (char* string)
    {
        if ((*string)++ != 'z')
            return;
        *string = 'a';
        changeString (string-1);
    }
    
    int main()
    {
        char a[] = "aaaa";
        for (;;)
        {
            printf("%s\n", a);
            changeString(a+3);
        }
    }
    


  • @bf Hast du das printf for der Schleife gemacht?
    @pale dog: Hast recht... war auf c++ headerdateien...

    Gruß
    zeigerzeiger



  • zeigerzeiger schrieb:

    @pale dog: Hast recht... war auf c++ headerdateien...

    in c++ geht sowas bestimmt mit nur einem einzigen befehl, irgendwas aus <algorithm>, boost oder so...
    🙂



  • es ist alles gesagt.



  • @pale dog: Auch da gebe ich dir recht, nur hab ich ANSI C gesehen und ein Cpp Testprojekt offen gehabt und dann gemischt und außerdem war es spät und ... 🤡

    @ ich finde: du hast rect 😉



  • Wow, pale dog...
    Ganz Genau hab ich mir den Output von deinem Code nicht angeguckt, sieht aber echt super aus!!
    Ich wünschte ich könnte so schön schematisch und logisch nachdenken 😉

    Super... vielen Dank!
    Danke euch allen 😃

    pale dog, könntest du mir vielleicht noch kurz sagen, wie du darauf gekommen bist?



  • bf schrieb:

    pale dog, könntest du mir vielleicht noch kurz sagen, wie du darauf gekommen bist?

    hmmm? gute frage. das ist mir einfach so eingefallen, nachdem ich den etwas umständlichen code darüber gesehen habe.
    in wirklichkeit versuche ich eigentlich immer rekursion zu vermeiden...
    🙂



  • Könnte man in deinen Code auch Großbuchstaben und Sonderzeichen einbauen? 🙂



  • pale dog schrieb:

    zeigerzeiger schrieb:

    @pale dog: Hast recht... war auf c++ headerdateien...

    in c++ geht sowas bestimmt mit nur einem einzigen befehl, irgendwas aus <algorithm>, boost oder so...
    🙂

    ach das gute alte C++ 😉

    ➡ next_permutation
    ➡ prev_permutation

    beide aus algotithm, die erledigen das wirklich mit einem einzigen befehl!



  • bf schrieb:

    Könnte man in deinen Code auch Großbuchstaben und Sonderzeichen einbauen? 🙂

    void changeString (char* string)
    {
        static char *charset = "abcdefghijklmnopqrstuvwxyz"
                               "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
                               "1234+-*/&!$%";
        char *c = 1 + strchr (charset, *string);
        if (*c)
            *string = *c;
        else
        {
            *string = *charset;
            changeString (string-1);
        }
    }
    

    🙂


Anmelden zum Antworten