Programmwiederhoung wie?
-
Hallo, wie kann ich bei c++ am ende, z.B. einer Berechnung eine Abfrage im Stiele von
Noch eine Berechnung? j/n:
programmieren. Bei ja soll das Programm von vorne beginnen. Bei nein eben beenden.
-
Schleifen.
-
Hi,
der Code bringt dir zwar nichts, wenn du ihn nicht verstehst, aber bei so etwas Einfachem mache ich mir keine Mühe.
char a; bool running = true; bool valInput; while(running) { valInput = false; while(!valInput) { std::cout << "Nochmal? (j/n)\r\n"; std::cin >> a; switch(a) { case 'j': valInput = true; break; case 'n': valInput = true; running = false; break; } if(!valInput) std::cout << "Wer lesen kann ist klar im Vorteil: Ich sagte: j oder n!?!?!\r\n"; } }
MfG Eisflamme
-
Dein Stil einzurücken ist ... interessant.
-
Verzeih, doch den gesamten Code schrieb ich hier direkt im Forum, da hatte ich in Dingen Einrücken nicht viele Möglichkeiten.
-
Hab´s auch so verstanden
Danke
-
Mis2com: Das wirkt irgendwie unnötig kompliziert, machst Du das immer so?
edit: Ich meine nichts für ungut, aber das gleiche kannst Du auch so oder so ähnlich haben:
char c = 'j'; do { cout << "Hallo\n"; cout << "Noch eine Runde? (j/n) "; cin >> c; } while (tolower(c) == 'j');
-
nman schrieb:
char c = 'j'; do { cout << "Hallo\n"; cout << "Noch eine Runde? (j/n) "; cin >> c; } while (tolower(c) == 'j');
tolower(static_cast<unsigned char>(c)) == 'j'
Dann läuft das auch auf Systemen bei denen char ein signed-Typ ist wie gewünscht.
-
nman:
Es ist insofern kompliziert, als dass ich nicht einfach annehme, dass jedes Zeichen außer j für nein steht, gerade bei wichtigeren Fragen sollte man hier darauf hinweisen, dass es die Eingabe nicht gibt.MfG Eisflamme
-
Mis2com schrieb:
nman:
Es ist insofern kompliziert, als dass ich nicht einfach annehme, dass jedes Zeichen außer j für nein steht, gerade bei wichtigeren Fragen sollte man hier darauf hinweisen, dass es die Eingabe nicht gibt.Hm, mir geht derartiges Verhalten zwar auf die Nerven, aber auch gut:
char c; do { cout << "Hallo\n"; do { cout << "Noch eine Runde? (j/n) "; cin >> c; c = tolower(static_cast<unsigned char>(c)); } while (c !='j' && c != 'n'); } while (c == 'j');
-
@Mis2com
Schlechter Codingstyle, findest Du nicht?
-
Warum unbedingt ne schleife?
Einfach so:
int funktion() { char a; cout<<"Rechnen, oder so..."<<endl; cout<<"Nochmal versuchen? (j / n)"<<endl; cin>>a; if(a == 'j' || a == 'J') { funktion(); } else { cout<<"Dann halt nicht..."<<endl; return 0; }
Schreib ne funktion, und ruf sie wieder auf. Falls dus in der main() stehen hast, kannste versuchen die auch nomma aufzurufen, geht zwar nach neuem standart angeblich nicht, aber ich habs probiert (Dev Cpp 4 und g++ (sry ka welche version)) und es ging wundersamer weise
probiers aus
-
Und nun verratet mir wieso "Standart" da oben zensiert wurde O.o
-
weil standard die richtige schreibweise ist?