Hi,
Ich poste erstmal den gesammten Programmcode und schildere dann unten meine Frage:
Code:
#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
int main (int argc, char *argv[])
{
int rechart,zahla,zahlb;
printf("\nMenue zur Berechnung");
printf("\n1.Addition");
printf("\n2.Subtraktion");
printf("\n3.Multiplikation");
printf("\n4.Division");
printf("\n\n5.Programm Beenden");
printf("\n\n\nBitte waehlen Sie eine Rechenart: ");
cin >> rechart;
switch(rechart)
{
case 1:
printf("\n\nSie muessen nun 2 Zahlen eingeben");
printf("\nGeben Sie nun ihre erste Zahl ein: ");
cin >> zahla;
printf("\nGeben Sie nun ihre zweite Zahl ein: ");
cin >> zahlb;
printf("\nRechnung: %i + %i = %i",zahla,zahlb,zahla+zahlb);
break;
case 2:
printf("\n\nSie muessen nun 2 Zahlen eingeben");
printf("\nGeben Sie nun ihre erste Zahl ein: ");
cin >> zahla;
printf("\nGeben Sie nun ihre zweite Zahl ein: ");
cin >> zahlb;
printf("\nRechnung: %i - %i = %i",zahla,zahlb,zahla-zahlb);
break;
case 3:
printf("\n\nSie muessen nun 2 Zahlen eingeben");
printf("\nGeben Sie nun ihre erste Zahl ein: ");
cin >> zahla;
printf("\nGeben Sie nun ihre zweite Zahl ein: ");
cin >> zahlb;
printf("\nRechnung: %i * %i = %i",zahla,zahlb,zahla*zahlb);
break;
case 4:
printf("\n\nSie muessen nun 2 Zahlen eingeben");
printf("\nGeben Sie nun ihre erste Zahl ein: ");
cin >> zahla;
printf("\nGeben Sie nun ihre zweite Zahl ein: ");
cin >> zahlb;
switch(zahlb)
{
case 0:
printf("\nSie koennen nicht durch Null teilen!");
printf("\nBitte geben sie eine andere zweite Zahl ein(nicht 0): ");
cin >> zahlb;
printf("\nRechnung: %i : %i = %i",zahla,zahlb,zahla/zahlb);
break;
default:
printf("\nRechnung: %i : %i = %i",zahla,zahlb,zahla/zahlb);
break;
}
break;
case 5:
printf("Druecken Sie eine Taste um das Programm zu beenden");
break;
}
getch();
return 0;
}
Aaalso:
Es geht um case 0: (rot markiert), welcher sich in case 4 (grün markiert) befindet.
Case 0 fordert den Benutzer ja zur erneuten Eingabe einer Zahl ein, falls die davor eingegebene Zahl eine 0 war. Wenn er jetzt aber bei der zweiten Frage wiederum eine 0 eingibt(obwohl er das ja eigentlich nicht soll, kann aber ja vorkommen) stürzt das Programm ab (ist ja auch klar warum)
Nun meine Frage: Wie kann ich es hinkriegen, dass der Benutzer immer und immer wieder aufgefordert wird eine neue Zahl einzugeben, wenn die vorherige eine 0 war, ohne dass ich das gleiche immer und immer wieder in Case 0 schreiben muss?
Ich denke mal, dass ganze kann man mit irgendeiner Schleife lösen..kenne mich aber mit Schleifen nicht besonders gut aus, und bräuchte da mal ein wenig Hilfe.
Hoffe die Frage war soweit verständlich (ist ein wenig kompliziert auszudrücken)
In meinem Beispiel steht auch 4x "Ergebnis". Das könnte man auch vorher nur ein mal ausgeben. Dann stellt sich aber die Frage was man bei "default" ausgibt, bzw. ob mans weglassen kann.
Du solltest bei C++ ] (cin, cout) für Ein- & Ausgabe verwenden. printf() gehört zu C (stdio). Eine Switch-Case Anweisung ist eigentlich auch nur bei mehrfachen Auswahlmöglichkeiten praktisch, wo if-else Verschachtelungen unübersichtlich wären. Wenns nur 2 Möglichkeiten gibt, wäre imho if-else besser.
Geändert von pixelflat (01.03.2010 um 00:12 Uhr).
01.03.2010, 19:23
Saja
ich würde das mit einer do-while schleife abfangen