IZZO
Mitglied
Moin,
ich bin neu bei C++ und habe ein kleines Programm zur Prozentrechnung geschrieben. Alles klappt wunderbar außer, dass bei einer Buchstabeneingabe dort wo man eigentlich nur 1,2,3,4 eingeben darf das Programm in eine Endlosschleife zu gehen scheint. Jedenfalls werden unendlich Sachen über die Konsole ausgegeben. Meiner Meinung nach habe ich durch die else-Funktion jedoch definiert was passieren soll wenn die Eingabe nicht 1,2,3 oder 4 ist. Bei Zahlen funktioniert die else-Funktion auch wunderbar. Wie verhindere ich also diese Endlosschleife? Kann ich nur bestimmte Datenwerte als Eingabe zulassen?
Vielen Dank!
ich bin neu bei C++ und habe ein kleines Programm zur Prozentrechnung geschrieben. Alles klappt wunderbar außer, dass bei einer Buchstabeneingabe dort wo man eigentlich nur 1,2,3,4 eingeben darf das Programm in eine Endlosschleife zu gehen scheint. Jedenfalls werden unendlich Sachen über die Konsole ausgegeben. Meiner Meinung nach habe ich durch die else-Funktion jedoch definiert was passieren soll wenn die Eingabe nicht 1,2,3 oder 4 ist. Bei Zahlen funktioniert die else-Funktion auch wunderbar. Wie verhindere ich also diese Endlosschleife? Kann ich nur bestimmte Datenwerte als Eingabe zulassen?
Vielen Dank!
C++:
#include <iostream>
using namespace std;
bool trueinput = true;
bool weitergehts = true;
void procedure();
int main() {
while(weitergehts == true){
procedure();
while(trueinput == false){
procedure();
}
}
return 0;
}
void procedure(){
double zahlen[3];
int eingabe_auswahl;
cout << "Grundwert: 1\n";
cout << "Prozentwert: 2\n";
cout << "Prozentsatz: 3\n";
cout << "Beenden: 4\n";
cin >> eingabe_auswahl;
if(eingabe_auswahl == 1 || eingabe_auswahl == 2 || eingabe_auswahl == 3 || eingabe_auswahl == 4){
switch(eingabe_auswahl){
case 1: cout <<"Geben Sie den Prozentwert ein und bestätigen mit Enter. Verfahren Sie genauso mit dem Prozentsatz (in %).\n";
cin >> zahlen[0];
cin >> zahlen[1];
zahlen[1] = zahlen[1] / 100;
zahlen[2] = zahlen[0] / zahlen [1];
cout << "Mit einem Prozentwert von " << zahlen[0] << " und einem Prozentsatz von " << zahlen[1] * 100
<< "% ergibt sich ein Grundwert von " << zahlen[2] << ".\n\n";
cin.sync();
weitergehts = true;
procedure();
break;
case 2: cout <<"Geben Sie den Grundwert ein und bestätigen mit Enter. Verfahren Sie genauso mit dem Prozentsatz (in %).\n";
cin >> zahlen[0];
cin >> zahlen[1];
zahlen[1] = zahlen[1] / 100;
zahlen[2] = zahlen[0] * zahlen [1];
cout << "Mit einem Grundwert von " << zahlen[0] << " und einem Prozentsatz von " << zahlen[1] * 100
<< "% ergibt sich ein Prozentwert von " << zahlen[2] << ".\n\n";
cin.sync();
weitergehts = true;
procedure();
break;
case 3: cout <<"Geben Sie den Prozentwert ein und bestätigen mit Enter. Verfahren Sie genauso mit dem Grundwert.\n";
cin >> zahlen[0];
cin >> zahlen[1];
zahlen[2] = zahlen[0] / zahlen [1];
cout << "Mit einem Prozentwert von " << zahlen[0] << " und einem Grundwert von " << zahlen[1]
<< " ergibt sich ein Prozentsatz von " << zahlen[2] * 100 << "%.\n\n";
cin.sync();
weitergehts = true;
procedure();
break;
case 4: weitergehts = false;
break;
}
trueinput = true;
}
else{
cout << "Bitte geben Sie die Zahlen '1 für Grundwertberechnung', '2 für Prozentwertberechnung' "
", '3 für Prozentsatzberechnung' oder '4 zum Beenden' ein.\n";
trueinput = false;
}
}