IZZO
Mitglied
Moin, ich bin ganz neu bei C++ und stehe vor einem Problem. Mein Programm spuckt plötzlich unendlich lange, den gleichen Satz aus, doch guckt selber.
Ich denke, dass Problem liegt in der else-Anweisung. Wenn ich eine falsche Zahl eingebe (>3 und <1), reagiert das Programm so wie es sollte. Nur bei einer Buchstabeneingabe funktioniert es nicht. Habs auch schon mit try/catch probiert (vllt falsch?).
C++:
#include <iostream>
using namespace std;
int eingabe_auswahl;
float zahlen[3];
int main() {
marke:
cout << "Grundwert: 1\n";
cout << "Prozentwert: 2\n";
cout << "Prozentsatz: 3\n";
cin >> eingabe_auswahl;
if(eingabe_auswahl == ( 1 || 2 || 3 )){
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";
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";
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 Prozentwert von " << zahlen[2] * 100 << "%.\n";
break;
}
}
else{
cout << "Bitte geben Sie die Zahlen '1 für Grundwertberechnung', '2 für Prozentwertberechnung' "
"oder '3 für Prozentsatzberechnung' ein.\n\n";
goto marke;
}
cin.sync();
cin.get();
return 0;
}
Ich denke, dass Problem liegt in der else-Anweisung. Wenn ich eine falsche Zahl eingebe (>3 und <1), reagiert das Programm so wie es sollte. Nur bei einer Buchstabeneingabe funktioniert es nicht. Habs auch schon mit try/catch probiert (vllt falsch?).