000
12.11.2012, 13:59 Uhr
~Andrej241
Gast
|
Hallo alle miteinander.
Ich lerne im Moment C++ und soll einen Taschenrechner programmieren, der sich unter anderem so lange wiederholen soll bis der Benutzer mit der Eingabe 0 0 0 das Programm beendet.
Nun wurde mir die do-while-Schleife beanstandet weil sie "grob falsch" wäre.
Mein Problem:
Bei mir kompiliert es ohne Probleme und macht auch genau das was es soll. (Ich benutze die aktuelle Version von dev-c++) Wenn ich die Bedingungen mit && verknüpfe (also rechentyp && wert1 && wert2!= 0) beendet sich das Programm schon wenn nur eine der drei Eingaben Null ist und nicht erst wenn alle drei Null sind.
Suche schon seit Tagen im Netz und in Büchern aber nirgends etwas über Schleifen mit drei Bedingungen gelesen.
Ist meine Formulierung der Bedingung falsch? Ist die Schleife überhaupt für so etwas geeignet? Warum funktioniert die Schleife wenn sie falsch ist?
Über Denkanstösse, Tipps und eventuelle Zaunpfähle würde ich mich sehr freuen.
C++: |
#include <iostream> using namespace std;
int main(){ int wert1, wert2, rechentyp; do { cout << "Bitte geben Sie 3 Zahlen ein. Die erste bestimmt die Rechenoperation." << endl; cout << "Zum beenden des Programms 0 0 0 eingeben." << endl; cout << "1 = Addition" << endl; cout << "2 = Subtraktion" << endl; cout << "3 = Multiplikation" << endl; cout << "4 = Division mit Rest" << endl; cout << "5 = Potenzieren" << endl; cin >> rechentyp >> wert1 >> wert2;
switch(rechentyp) { case 1: cout << wert1 << " + " << wert2 << " = " << wert1+wert2 << endl; break; case 2: cout << wert1 << " - " << wert2 << " = " << wert1-wert2 << endl; break; case 3: cout << wert1 << " * " << wert2 << " = " << wert1*wert2 << endl; break; case 4: cout << wert1 << " / " << wert2 << " = " << wert1/wert2 << endl; cout << "Rest:" << wert1%wert2 << endl; break; case 5: if(wert1>=0 && wert2>=0){ int ergebnis=1; for(int i=0; i<wert2; i++){ ergebnis=ergebnis*wert1; } cout << wert1 << " hoch " << wert2 << "=" << ergebnis << endl; } else if(wert2 < 0){ wert2= -wert2; int ergebnis=1; for (int i=0; i<wert2; i++){ ergebnis=ergebnis*wert1; } cout << wert1 << " ^ -" << wert2 << " = " << "1/" << ergebnis << endl; } break;
} } while (rechentyp, wert1, wert2!= 0 );
return (0); }
|
Edit von ao: CPP-Tags repariert Dieser Post wurde am 13.11.2012 um 08:30 Uhr von ao editiert. |