Anfänger benötigt hilfe bei Schleifen!
-
Da täuschst du dich.
-
ups... tatsächlich. Dann nehme ich alles zurück.
-
Schnell ins Bett, bevor ich noch mehr Müll erzähle...
Caipi
-
muss dieses Posten über mehrere Webforen denn unbedingt sein du ****?
das ist ja fast schon regelmässig ....
-
@Caipi: nene, Bashars Einwand bezog sich auf mich. Deine Aussage ist korrekt.
-
Die Schleife von Caipi wird dir nichthelfen, da sie nun nicht für Auswahl != n alles wiederholt, und nicht nur die Abfrage wiederholt. Besser müsste sein:
do
{
Programmablauf;
do
{
cout << "Nochmal?(j/n)";
cin Auswahl;
}
while ((Auswahl!="j")&&(Auswahl!="J")&&(Auswahl!="n")&&(Auswahl!="N"));
}
while ((Auswahl!="n")&&(Auswahl!="N"));
-
Und um Mehrfachangaben abzufangen sollte man wenn ich das denn richtig gelernt habe, den Tastaturpuffer leeren und das Fehlerflag entfernen.
Ist mir passiert bei cin.get(), es wird ja der Puffer ausgelesen beim nächsten Schleifendurchlauf.
cin.sync()
cin.clear()
helfen da.
Eingabe jjj statt j, es wird nur das erste Zeichen (j) ausgewertet, Rest in den Puffer.
Keine Garantie auf diese Aussage.
-
do { Programmablauf; cout<<"Nochmal? (j/n)"; cin>>Auswahl; } while (Auswahl ==´j´ II Auswahl == ´J´);
du hast falsche Zeichen benutzt!!!
II ist nicht "oder" sondern müsste || sein!
´ ´ ist nicht richtig, es müsste ' ' sein!
der Quelltext würde sann so aussehen:
do { cout<<"Nochmal? (j/n)"; cin>>Auswahl; }while(Auswahl=='j'||Auswahl=='J');
mfg hohesC
[EDIT1]und so dicke Fehler hat niemand bemerkt???[/EDIT1]
[EDIT2]OMG da sind noch mehr solcher Fehler in den Antwort Posts!!![/EDIT2]
-
bool DoAgain() { while(::GetKeyState('J')>=0 && ::GetKeyState('N')>=0) Sleep(1); return ::GetKeyState('J')<0; } int main(int argc, char **argv[]) { do { bla(); }while(DoAgain()); return 0; }
Und da sage doch jemand:
AFAIK geht das mit den Standard-Sachen nicht.
Siehe eventuell FAQS zu deinem OSJa, ich weiß... meine Lösung ist Windows-Spezifisch... aber auch unter Linux wird das machbar sein... evtl. heißt die Funktion nur anders. Da stellt sich die Frage: Was ist ein Standard? - WinAPI ist u.a. ein Standard.
-
Also ich hab das mal in nem Tool so gemacht:
char user[128],pass[128]=""; int index = -1; cout<< "Please login with admin-rights!\n" << "Username: "; cin >> user; cout << "Password: " << flush; do{ index++; pass[index] = getch(); putch(42); }while (pass[index] != 13); pass[index] = '\0';
Sorry, ist jetzt nur copy and paste, aber ich denke es ist klar was passiert.
Wichtig ist das flush nach dem 2. cout, weil sonst hängt sich das Programm dort weg wenn ich per getch() nur genau eine Taste haben will.
Kein Plan ob das Platformunabhängig ist, aber unter Windows funktioniert es perfekt.
-
@windoof: jaja, das übliche...
Standard heißt in diesem Forum: C++-Standard. Deine Lösung ist Windows-spezifisch. Aber bei der Äußerung wurde speziell auf das OS bzw. die entsprechenden Foren/FAQs verwiesen.
-
Jester schrieb:
@Caipi: nene, Bashars Einwand bezog sich auf mich. Deine Aussage ist korrekt.
<korintenkack>
Und meine Aussage bezog sich wiederum auf meinen "Ursprungs"-Post, d.h den uneditierten Post oder besser gesagt: Auf meinen uneditierten zweiten Post aus diesem Thread. (Hoffentlich habe ich das jetzt verständlich genug ausgedrückt)
</korintenkack>
Caipi