problem mit einem algorythmus
-
erstmal ein bsp:
111 112 113 121 122 123 131 132 133 211 212 213 ... 333sowas kann man mit 3 schleifen einfach relasieren. aber was ist wenn ich die anzahl der ziffern nich kenne die ich hochzählen lasse?
wie kann ich eine funktion machen die beliebig viele ziffern (0-120) in einer beliebigen größenordnung (0-26 für chars...) aufzählt?
-
such im internet mal nach 'permutation'
-
Kannst du dir nicht einfach den Sandkasten vorstellen und dort herumtrollen?
<EDIT>
Tut mir Leid, habe nur kurz die Zahlenreihe überflogen, das nächste Post mit Permutation gesehen und nicht mitgedacht.
</EDIT>
-
Das hatten wir vor kurzem schon mal: http://www.c-plusplus.net/forum/viewtopic-var-t-is-146337-and-highlight-is-.html
-
Christoph K. schrieb:
Kannst du dir nicht einfach den Sandkasten vorstellen und dort herumtrollen?

-
immigrant schrieb:
such im internet mal nach 'permutation'
Naja, Permutation wäre hier etwas anderes.
Das hier123 132 213 231 312 321wäre eine Permutation.
-
nicht das ich sentimental wäre aber
Kannst du dir nicht einfach den Sandkasten vorstellen und dort herumtrollen?
das war genein.
und permutationen sind etwas anderes, da lediglich die positionen der ziffern eine rolle spielen. ich wollte einfach nur mal vergleichen ob es schneller ist durch einen zufallsalgo oder durch lineare lösung zum ziel zu kommen.
void bruteforcer::set_cur_passwd(int range, int loop) { //lineare methode int range_grNm = 26; int *char_array; char_array = new int[range]; for(int i = range-1; i >= 0; i--) { for(int j = 0; j < range_grNm; j++) { char_array[i] = j; //AUSGABE: for(int i = 0; i < range; i++) cur_passwd += char_array[i]+65; std::cout<<"Derzeitiges Wort: "<<cur_passwd.toStdString()<<std::endl; cur_passwd = ""; //AUSGABE ENDE } } /*//zufällige methode time_t sek; time(&sek); srand(sek); while(true) { int i = 0; if(loop) { i++; if(i >= loop) break; } for(int j = 0; j < range; j++) { int pos_grS = rand() % 26 + 64 + 1;//+1 für die 0 int pos_smS = rand() % 122 + 97; int pos_Num = rand() % 57 + 48; char tmp_char = pos_grS; cur_passwd += tmp_char; //std::cout<<pos_grS<<std::endl; } std::cout<<"Derzeitiges Wort: "<<cur_passwd.toStdString()<<std::endl; if(cur_passwd == "ROT") { break; std::cout<<"Passwort gefunden: "<<cur_passwd.toStdString()<<std::endl; } cur_passwd = ""; } */ }wobei mir meine lineare methode kummer bereitet, das resultat nicht meiner ziel nahekommt. außerdem muss mir niemand helfen, es war ja nur ne frage gewesen. und von dem existierenden thread wuss ich nichts.

-
harkon schrieb:
und von dem existierenden thread wuss ich nichts.

War ja auch kein Vorwurf.