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 nachdenkenSuper... vielen Dank!
Danke euch allenpale 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); } }