Klotzkopp Geschrieben 10. Dezember 2006 Geschrieben 10. Dezember 2006 So oder was?Das hat sich nicht wirklich verbessert. Eingerückt werden Schleifenkörper und if/else-Blöcke, keine einfachen Sequenzen. So sollte das aussehen: #include <iostream> #include <string> #include <conio.h> using namespace std; void main() { string bn=""; string pw=""; char zeichen; cout <<"\n\n\t Geben Sie Ihren Benutzernamen ein!"; while(true) { zeichen=getch(); if(zeichen!=13) { bn = bn + zeichen; cout<<"*"; } else break; } if(bn=="Chef") { cout<<"\n\n\t Ihr Benutzername ist richtig!" << endl << endl; } else cout <<"\n\n\t Zugang nicht erlaubt! Benutzername Falsch" << endl << endl; cout <<"\n\n\t Geben Sie Ihr Passwort ein! <max 3 Versuche>"; for (int i=3; i>=1;i--) { while(true) { zeichen=getch(); if(zeichen!=13) { pw = pw + zeichen; cout<<"*"; } else break; } if(pw=="Entropie 48" && bn=="Chef") { cout<<"\n\n\t Zugang erlaubt!" << endl << endl; break; } else cout <<"\n\n\t Zugang nicht erlaubt! Passwort Falsch" << endl << endl; cout <<"\n\n\t Geben Sie Ihr Passwort erneut ein!"; } }[/CODE] Zitieren
Klotzkopp Geschrieben 10. Dezember 2006 Geschrieben 10. Dezember 2006 Noch ein paar Kommentare: - Die Initialisierung der Strings mit "" ist unnötig - Benutzernamen werden üblicherweise bei der Eingabe nicht durch Sternchen ersetzt. - Wenn man einen falschen Benutzernamen eingibt, warum kommt man dann überhaupt zur Passwortabfrage? Zitieren
muca89 Geschrieben 10. Dezember 2006 Autor Geschrieben 10. Dezember 2006 achso danke aber mein Fehler wurde noch nciht behoben. hatte geschrieben, dass wenn ich BN richtig eingebe und PW falsch werde ich aufgefordert nochmal PW einzugeben aber wenn ich es richtig eingebe danach steht da das es trotzdem falsch ist Zitieren
Klotzkopp Geschrieben 10. Dezember 2006 Geschrieben 10. Dezember 2006 Ich hatte meine Beitrag noch editiert, aber das ist wohl untergegangen. Das Problem ist, dass in pw noch die alte, falsche Eingabe drinsteht. Zitieren
muca89 Geschrieben 10. Dezember 2006 Autor Geschrieben 10. Dezember 2006 Noch ein paar Kommentare: - Die Initialisierung der Strings mit "" ist unnötig - Benutzernamen werden üblicherweise bei der Eingabe nicht durch Sternchen ersetzt. - Wenn man einen falschen Benutzernamen eingibt, warum kommt man dann überhaupt zur Passwortabfrage? Stimmt aber 1. Benutzername mit sternchen. Wenn ich das sternchen weg tu dann gebe ich was ein ich sehe es aber net 2. Ich bin die ganze Zeit am überlegen wie ich es weg bekomme das wenn ich BN falsch eingebe das alles abbricht und nciht trotzdem PW abfrage kommt Zitieren
Klotzkopp Geschrieben 10. Dezember 2006 Geschrieben 10. Dezember 2006 1. Benutzername mit sternchen. Wenn ich das sternchen weg tu dann gebe ich was ein ich sehe es aber netWeil du mit getch einliest. Das ist ja der ganze Sinn von getch: Dass man nicht sieht, was eingegen wird. Du könntest natürlich zeichen ausgeben. Aber du kannst auch einfach eine "normale" Eingabefunktion benutzen, z.B. getline. 2. Ich bin die ganze Zeit am überlegen wie ich es weg bekomme das wenn ich BN falsch eingebe das alles abbricht und nciht trotzdem PW abfrage kommtPack die ganze Passwortabfrage in einen if-Block, der nur betreten wird, wenn der Benutzername passt. Zitieren
muca89 Geschrieben 10. Dezember 2006 Autor Geschrieben 10. Dezember 2006 Ok habe es hinbekommen das wenn ich BN falsch eingebe das Programm abbricht #include <iostream> #include <string> #include <conio.h> using namespace std; void main() { string bn; string pw; char zeichen; cout <<"\n\n\t Geben Sie Ihren Benutzernamen ein!"; while(true) { zeichen=getch(); if(zeichen!=13) { bn = bn + zeichen; cout<<"*"; } else break; } if(bn=="Chef") { cout<<"\n\n\t Ihr Benutzername ist richtig!" << endl << endl; } else cout <<"\n\n\t Zugang nicht erlaubt! Benutzername Falsch" << endl << endl; if(bn=="Chef") cout <<"\n\n\t Geben Sie Ihr Passwort ein! <max 3 Versuche>"; for (int i=3; i>=1;i--) { break; while(true) { zeichen=getch(); if(zeichen!=13) { pw = pw + zeichen; cout<<"*"; } else break; } if(pw=="Entropie 48" && bn=="Chef") { cout<<"\n\n\t Zugang erlaubt!" << endl << endl; break; } else cout <<"\n\n\t Zugang nicht erlaubt! Passwort Falsch" << endl << endl; cout <<"\n\n\t Geben Sie Ihr Passwort erneut ein!"; } } Jetzt müssen wir nur noch klären wenn ich BN richtig eingebe und PW falsch und ich aufgefordert werde neu einzugegen und ich richtig PW eingebe das das programm nicht sagt das es falsch ist Zitieren
muca89 Geschrieben 10. Dezember 2006 Autor Geschrieben 10. Dezember 2006 Owww ist fehler drin. Auch wenn ich BN richtig eingebe steht dort das ichd ann pw eingeben kann aber sofort press any key to contuniu also dieses break schliesst das Programm Zitieren
Klotzkopp Geschrieben 10. Dezember 2006 Geschrieben 10. Dezember 2006 Hättest du dir frühzeitig angewöhnt, deinen Code ordentlich einzurücken, hättest du gleich gesehen, dass die einzige Zeile, die von dem if(bn=="Chef") abhängt, die cout-Zeile danach ist. Wenn du nach if keinen Block (geschweifte Klammern) machst, bezieht sich das nur auf die nächste Anweisung. Und das break, das du da eingefügt hast, bricht deine Schleife sofort wieder ab. Und da danach nichts mehr kommt, ist eben das Programm beendet. Zitieren
muca89 Geschrieben 10. Dezember 2006 Autor Geschrieben 10. Dezember 2006 Boah ich raste gleich aus. ich sitze bestimmt seit 5 stunden an der aufhabe habe es immernoch net ganz richtig. @ Klotzkopp würdest du mir den gefallen tun und bitte mir das Programm komplett richtig hier rein schreiben. ich wär dir sehr dankbar. Ich bin wirklicks eit midnestens heute mittag 13 uhr an der Aufgabe aber immer geht was schief Zitieren
Klotzkopp Geschrieben 10. Dezember 2006 Geschrieben 10. Dezember 2006 würdest du mir den gefallen tun und bitte mir das Programm komplett richtig hier rein schreiben. ich wär dir sehr dankbar.Wie gesagt, ich glaube, dadurch lernst du nichts. #include <iostream> #include <string> #include <conio.h> using namespace std; int main() { string bn; cout <<"\n\n\t Geben Sie Ihren Benutzernamen ein!"; getline( cin, bn ); if(bn!="Chef") { cout <<"\n\n\t Zugang nicht erlaubt! Benutzername Falsch\n\n"; return 0; } cout<<"\n\n\t Ihr Benutzername ist richtig!\n\n"; cout <<"\n\n\t Geben Sie Ihr Passwort ein! <max 3 Versuche>"; for (int i=3; i>=1; --i) { string pw; char zeichen = '\0'; while( (zeichen=getch()) != 13 ) { pw += zeichen; cout<<'*'; } if(pw=="Entropie 48") { cout<<"\n\n\t Zugang erlaubt!" << endl << endl; break; } cout <<"\n\n\t Zugang nicht erlaubt! Passwort Falsch\n\n"; cout <<"\n\n\t Geben Sie Ihr Passwort erneut ein!"; } }[/code] Ich bin wirklicks eit midnestens heute mittag 13 uhr an der Aufgabe aber immer geht was schiefDas liegt IMHO daran, dass du falsch an die Aufgabe herangehst, und einige ziemlich große Lücken in den Grundlagen hast. Daran solltest du arbeiten, bevor du dich an die nächste Aufgabe machst. Zitieren
muca89 Geschrieben 10. Dezember 2006 Autor Geschrieben 10. Dezember 2006 ich danke dir. Ich werde alles dran tun und diese schei.e verstehen Zitieren
muca89 Geschrieben 11. Dezember 2006 Autor Geschrieben 11. Dezember 2006 So hier ist die Lösung die wir heute im Unterricht gemacht haben #include <iostream> #include <string> #include <conio.h> using namespace std; void main() { string benutzername; string passwort; char zeichen; int a=3; do { cout <<"\n\n\tBitte geben Sie ihren Benutzernamen ein !"; cin >> benutzername; cout <<"\n\n\tGeben Sie ihr Passwort ein! Sie haben noch " << a <<" Versuche "; a--; passwort=""; while(true) { zeichen = getch(); cout << "*"; if(zeichen !=13) passwort = passwort + zeichen; else break; } { if(passwort=="Entropie 48" && benutzername=="Chef") { cout << "\n\n\tZugang erlaubt" <<endl; exit(0); } else cout <<"\n\n\tKein Zugang"<< endl; } if(a==0) cout <<"\n\n\tDas Programm wird beendet, da das Passwort 3x Falsch eingegeben wurde." << endl << endl; } while(a>0); } Zitieren
robotto7831a Geschrieben 11. Dezember 2006 Geschrieben 11. Dezember 2006 So hier ist die Lösung die wir heute im Unterricht gemacht haben Es ist nicht die Lösung sondern eine von mehreren Möglichkeiten. Frank Zitieren
muca89 Geschrieben 11. Dezember 2006 Autor Geschrieben 11. Dezember 2006 ja oder so bzw der lehrer wollte es so haben Zitieren
Anybody Geschrieben 14. Dezember 2006 Geschrieben 14. Dezember 2006 Ist aber auch nicht grad wirklich elegant die Lösung... Ich will ja nicht an der Kompetenz der Lehrer zweifeln, aber richtig hübsch ist die ja nicht gerade Zitieren
muca89 Geschrieben 14. Dezember 2006 Autor Geschrieben 14. Dezember 2006 Der lehrer is bissel älter. Ich zweifel auch an Ihm Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.