P
tntnet schrieb:
Das ist doch ein ganz normales Programmierproblem. Wenn Du programmieren kannst, kannst Du Dir die Funktion schreiben. Wenn Du es nicht kannst, dann musst Du das eben lernen. Oder willst Du hier eine fertige Lösung für deine Gruppenarbeit? Das wäre natürlich sehr viel bequemer für dich.
Phtevenz schrieb:
Kann mir wer helfen? evtl auch mit nem anderen Ansatz?
Das ist mein Teil in ner Gruppenarbeit...
Und überhaupt finde ich es schon befremdlich, wie schlechtes deutsch hier überhaupt geschrieben wird. "Kann mir jemand helfen?" wäre eine korrekte deutsche Frage. Und "nem" steht ganz bestimmt nicht im Duden. Und "ner" auch nicht.
Mir war nicht klar, dass hier so viel Wert auf die Ausdrucksweise gelegt wird. Zumindest meinerseits steht der Inhalt im Vordergrund. Wenn ich es nicht kann dann frage ich um Hilfe, das habe ich hiermit getan. Eine fertige Lösung habe ich mittlerweile selber. Dank an Belli, das war der Denkanstoß nach dem ich gesucht habe.
Wo wir gerade bei Rechtschreibung sind, ich bin da offensichtlich kein Experte, aber "deutsch" schreibt man glaube ich "Deutsch", aber ist ja nicht so wichtig bei genau diesem Wort. Sachen wie "nem" und statt "jemand" ein "wer" zu benutzen würde ich ganz nach Duden als "umgangssprachlich" bezeichnen oder auch "regional anerkannt". Hier nur ein Link auf einen Onlineduden http://www.duden.de/rechtschreibung/jemand
Genug gesocialised. Für alle die es interessiert hier der C++ Code:
char getNext(char c){
int i = 0;
for (; i < setLength; ++i) //index des zu inkrementierenden chars im charSet suchen. bsp : c = d , i = 13
if (c == charSet[i])
break;
if (i < (setLength - 1))
return charSet[i + 1];
else
return charSet[0];
}
void incrementTry(){
int x = pwdSize - 1;
char tmp = pwdTry[x];
//printf("\n checking char %c", tmp);
if (tmp != charSet[setLength - 1]){ //nur eine stelle zu ändern
char c = getNext(tmp);
pwdTry[x] = c;
}
else{ // was passiert bei 0ZZZZZ ? alle Z umdrehen
while (tmp == charSet[setLength - 1] && (x>0)){
char c = getNext(tmp);
pwdTry[x] = charSet[0];
--x;
tmp = pwdTry[x];
if (tmp != charSet[setLength - 1])
pwdTry[x] = getNext(tmp);
}
}
}
Wichtig!
Hierbei wird vorausgesetzt, dass folgende vier globale Variablen existieren:
std::string pwdTry = "000000";
std::string pwdTry = "000000";
char charSet[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
int setLength = sizeof(charSet)/sizeof(char);
int pwdSize = pwdTry.length();
Nach nem Aufruf von incrementTry() wird pwdTry um eins "erhöht" je nach charSet. Wer mag kann den charSet auch anpassen, soweit ich gesehen habe funktioniert es auch mit Umlauten. Bis auf '\0' natürlich. Wobei ich nicht wüsste wie das wer am Keyboard als Passwort eintippen kann.
Es handelt sich hierbei zwar um Passwortgenerierung, aber es soll nur Beispielhaft erwähnt werden. Laufzeit steht bei meiner Gruppe (noch?) nicht im Vordergrund. Falls wer das Thema Laufzeit in diesem Zusammenhang diskutieren will, gerne