endlosschleife
-
hab ein prog wo man die auswahl zwischen drei Möglichkeiten hat. Man soll 1, 2 oder drei eingeben. cin>>wahl
hab dann:if (wahl==1) ... if (wahl==2) ... if (wahl==3) ... else ...
Das Problem ist, dass wenn ich was anderes als 1 2 oder 3 eingeb, das prog Zwar wieder an den anfang springt, aber ich nicht mehr gefragt werde was ich machen will. Ich glaub ich poste ma lieber den code, weil das sonnst keiner versteht:
#include <iostream> #include <conio.h> using namespace std; int main () { int wahl; int zahl; while (1!=2) { cout<<"D e z i m a l <--> hex\n\n"; cout<<"Was wollen Sie machen?\n"; cout<<"(1) dezimal --> hex\n" <<"(2) hex --> dezimal\n" <<"(3) Close\n"; cin>>wahl; if (wahl==1) { cout<<"Enter Dezimalzahl: "; cin>>zahl; cout<<"Die Dezimalzahl "<<zahl<<" ist die hex-Zahl "<<hex<<zahl<<"\n\n"; getch(); } if (wahl==2) { cout<<"Enter Hexzahl: "; int zahl; cin>>hex>>zahl; cout<<"Die Hexzahl "<<zahl<<" ist die hex-Zahl "<<dec<<zahl<<"\n\n"; getch(); } if (wahl==3) { return (0); } else { cout<<"Bitte waehlen sie zwischen 1, 2 und 3!\n\n"; getch(); } } }
-
das liegt wohl an irgendwelchen resten im keyboard buffer.
probier statt 'getch()' mal das:void eatToNL(FILE * inputStream) { int c; /* Eat till (& including) the next newline */ while ((c = getc(inputStream)) != EOF) if (c == '\n') break; } /* blah blah */ eatToNL(stdin);
von dieser seite: http://www.comeaucomputing.com/techtalk/#flushinput
ausserdem: while (1!=2)
ist auch: while(true)
-
Danke, auch für den tip mit der Syntax
-
An den resten im Buffer liegts nicht. Hab deinen code probiert aber kam auf das selbe ergebniss wie bei getch ???
-
schonmal was von switch() und case: gehört?und pack alles in eine endlosschleife
do{ cout << "(1) mache etwas..."; cout << "(2) mache etwas besseres..." cout << "(3) ich lass das programmieren lieber " cin>>Auswahl; switch(Auswahl){ case '1': cin<<"eingabe für (1)"; mache_was(); case '2': cin<<"eingabe für (2)"; mache_was(); case '3': cin<<"eingabe für(3)"; mache_was(); default: cout<<"falsche eingabe"; } }while(!Auswahl);
-
Cico war zu schnell
-
Coda schrieb:
Cico war zu schnell
Tut mir leid Coda
-
Nicht irritieren lassen!
Jeder fängt so oder ähnlich an. Manche können bis heute noch nicht cin und cout auseinander halten.
Nachfolgend noch ein Beispiel für do/while und switch/case:#include <iostream> #include <iomanip> #include <cstdlib> using namespace std; int main() { const int max_parkdauer = 60; const int zeittakt = 15; const float einheit = 0.50; bool grussflag = false; char taste, ende; int parkdauer; float betrag; ende = 'j'; parkdauer = 0; betrag = 0; do { if (grussflag == false) cout <<"Guten Tag.\n"; cout << "Bitte geben Sie die Parkdauer ein: "; cin >> taste; cout << "\n"; switch (taste) { case 'P': case 'p': parkdauer += zeittakt; if(parkdauer > max_parkdauer) { parkdauer = max_parkdauer; cout << "Hinweis: Die maximale Parkdauer betraegt " << max_parkdauer << " Minuten." << endl; } cout << "Parkdauer: " << parkdauer <<" min\n\n"; grussflag = true; break; default: betrag = einheit * parkdauer / zeittakt; cout << "Parkdauer: " << parkdauer << " Minuten." << endl; cout << "Zu zahlender Betrag : " << betrag << " Euro." << endl; cout << "Beleg wird gedruckt." << endl; cout << "Moechten Sie den Vorgang wiederholen? [J/N]" << endl; cin >> ende; if (ende=='j' || ende=='J') { grussflag = false; parkdauer = 0; betrag = 0; } system("cls"); break; } } while(ende=='j' || ende=='J'); }