Mahlzeit zusammen.
Ich beschäftige mich gerade mit C++
Ich habe hier das Buch "Einführung in die Programmierung mit C++"
Die aktuelle Übung bezieht sich auf switch und if Anweisungen.
Man sollte einen kleinen Währungsrechner programmieren.
Soweit läuft das Programm auch erstmal wie es soll, außer der Nutzer gibt als ersten den Betrag direkt gefolgt von einem 'e' oder 'E' (für Euro) ein, also z.B. 100e oder 23E.
Für alle anderen Währungen geht das (die Kürzel sind D,P,J,C,K), also z.B. 42K oder 129d.
Meine Vermutung ist, dass das e oder E in dem Fall für die Expotentialdarstellung rangezogen wird und das ganze nen Fehler verursacht.
Ich habe hier das include <iostream> und den namespace std für euch eingefügt, ich nutzte die auskommentierte headder Datei, aber die gehört speziell zum Buch und die hier genutzten Teile sind alle auch in iostream.
Kann mir wer erklären wo das Problem liegt?
Hier mal der Code:
//Programm zum Umrechnen von Währungen.
//Stand der Faktioren - 22.06.2018
//Autor Mario A. Berger
//#include "std_lib_facilities.h"
#include <iostream>
using namespace std;
int main(int argc, char const *argv[]) {
//Initialisierung der Konstangen Umrechnugsfaktoren
const double Euro_USD=1.17, Euro_GBP=0.88, Euro_JY=128.28, Euro_CY=7.59, Euro_KR=10.32,
USD_GBP=0.75, USD_JY=110.0, USD_CY=6.51, USD_KR=8.85,
GBP_JY=145.87, GBP_CY=8.63, GBP_KR=11.73, JY_CY=0.06, JY_KR=0.08, CY_KR=1.36;
START:
//Initialisierung der Variablen zur Umrechnung
double betrag_In=0.0, betrag_Out=0.0;
char waerung_In='?', waerung_Out='#', weiter='*';
//Ausgabe Erklärung
cout << "Bitte benutzen Sie fuer die Eingabe der Waehrung folgende Buchstaben:\n"<<
"E - Euro / D - Dollar / P - Pfund / J - Yen / C - Yuan / K - Kronen\n"<<endl;
//Eingabe durch Benutzer
cout << "Bitte geben Sie den Betrag und die Waerung ein, die umgerechet werden soll:\n"<<
"Eingabe: ";
cin >> betrag_In >> waerung_In;
cout << "Bitte geben Sie die Waehrung ein, in die umgerechnet werden soll.\n"<<
"Eingabe: ";
cin >> waerung_Out;
//Umrechnung und Ausgabe
//Eingabe wird über switch gewählt und per if in gewählte Wärung umgerechnet
RECHNUNG:
switch (waerung_In) {
case 'E':case 'e':
EURO:
if (waerung_Out=='D' || waerung_Out=='d') {
betrag_Out=betrag_In*Euro_USD;
cout << betrag_In << " Euro sind " << betrag_Out << " Dollar\n\n";
break;
} else if (waerung_Out=='p' || waerung_Out=='P') {
betrag_Out=betrag_In*Euro_GBP;
cout << betrag_In << " Euro sind " << betrag_Out << " Pfund\n\n";
break;
} else if (waerung_Out=='J' || waerung_Out=='j') {
betrag_Out=betrag_In*Euro_JY;
cout << betrag_In << " Euro sind " << betrag_Out << " Japanische Yen\n\n";
break;
} else if (waerung_Out=='C' || waerung_Out=='c') {
betrag_Out=betrag_In*Euro_CY;
cout << betrag_In << " Euro sind " << betrag_Out << " Chinesische Yuan\n\n";
break;
} else if (waerung_Out=='K' || waerung_Out=='k') {
betrag_Out=betrag_In*Euro_KR;
cout << betrag_In << " Euro sind " << betrag_Out << " Schwedische Kronen\n\n";
break;
} else {
cout << "Unbekannte Waerung. Bitte neu eingeben ";
cin >> waerung_Out;
goto EURO;
}
case 'D':case 'd':
DOLLAR:
if (waerung_Out=='E' || waerung_Out=='e') {
betrag_Out=betrag_In/Euro_USD;
cout << betrag_In << " Dollar sind " << betrag_Out << " Euro\n\n";
break;
} else if (waerung_Out=='P' || waerung_Out=='p') {
betrag_Out=betrag_In*USD_GBP;
cout << betrag_In << " Dollar sind " << betrag_Out << " Pfund\n\n";
break;
} else if (waerung_Out=='J' || waerung_Out=='j') {
betrag_Out=betrag_In*USD_JY;
cout << betrag_In << " Dollar sind " << betrag_Out << " Yen\n\n";
break;
} else if (waerung_Out=='C' || waerung_Out=='c') {
betrag_Out=betrag_In*USD_CY;
cout << betrag_In << " Dollar sind " << betrag_Out << " Yuan\n\n";
break;
} else if (waerung_Out=='K' || waerung_Out=='k') {
betrag_Out=betrag_In*USD_KR;
cout << betrag_In << " Dollar sind " << betrag_Out << " Kronen\n\n";
break;
} else {
cout << "Unbekannte Waerung. Bitte neu eingeben ";
cin >> waerung_Out;
goto DOLLAR;
}
case 'P':case 'p':
PFUND:
if (waerung_Out=='E' || waerung_Out=='e') {
betrag_Out=betrag_In/Euro_GBP;
cout << betrag_In << " Pfund sind " << betrag_Out << " Euro\n\n";
break;
} else if (waerung_Out=='D' || waerung_Out=='d') {
betrag_Out=betrag_In/USD_GBP;
cout << betrag_In << " Pfund sind " << betrag_Out << " Dollar\n\n";
break;
} else if (waerung_Out=='J' || waerung_Out=='j') {
betrag_Out=betrag_In*GBP_JY;
cout << betrag_In << " Pfund sind " << betrag_Out << " Yen\n\n";
break;
} else if (waerung_Out=='C' || waerung_Out=='c') {
betrag_Out=betrag_In*GBP_CY;
cout << betrag_In << " Pfund sind " << betrag_Out << " Yuan\n\n";
break;
} else if (waerung_Out=='K' || waerung_Out=='k') {
betrag_Out=betrag_In*GBP_KR;
cout << betrag_In << " Pfund sind " << betrag_Out << " Kronen\n\n";
break;
} else {
cout << "Unbekannte Waerung. Bitte neu eingeben ";
cin >> waerung_Out;
goto PFUND;
}
case 'J':case 'j':
YEN:
if (waerung_Out=='E' || waerung_Out=='e') {
betrag_Out=betrag_In/Euro_JY;
cout << betrag_In << " Yen sind " << betrag_Out << " Euro\n\n";
break;
} else if (waerung_Out=='D' || waerung_Out=='d') {
betrag_Out=betrag_In/USD_JY;
cout << betrag_In << " Yen sind " << betrag_Out << " Dollar\n\n";
break;
} else if (waerung_Out=='P' || waerung_Out=='p') {
betrag_Out=betrag_In/GBP_JY;
cout << betrag_In << " Yen sind " << betrag_Out << " Pfund\n\n";
break;
} else if (waerung_Out=='C' || waerung_Out=='c') {
betrag_Out=betrag_In*JY_CY;
cout << betrag_In << " Yen sind " << betrag_Out << " Yuan\n\n";
break;
} else if (waerung_Out=='K' || waerung_Out=='k') {
betrag_Out=betrag_In*JY_KR;
cout << betrag_In << " Yen sind " << betrag_Out << " Kronen\n\n";
break;
} else {
cout << "Unbekannte Waerung. Bitte neu eingeben ";
cin >> waerung_Out;
goto YEN;
}
case 'C':case 'c':
YUAN:
if (waerung_Out=='E' || waerung_Out=='e') {
betrag_Out=betrag_In/Euro_CY;
cout << betrag_In << " Yuan sind " << betrag_Out << " Euro\n\n";
break;
} else if (waerung_Out=='D' || waerung_Out=='d') {
betrag_Out=betrag_In/USD_CY;
cout << betrag_In << " Yuan sind " << betrag_Out << " Dollar\n\n";
break;
} else if (waerung_Out=='P' || waerung_Out=='p') {
betrag_Out=betrag_In/GBP_CY;
cout << betrag_In << " Yuan sind " << betrag_Out << " Pfund\n\n";
break;
} else if (waerung_Out=='J' || waerung_Out=='j') {
betrag_Out=betrag_In/JY_CY;
cout << betrag_In << " Yuan sind " << betrag_Out << " Yen\n\n";
break;
} else if (waerung_Out=='K' || waerung_Out=='k') {
betrag_Out=betrag_In*CY_KR;
cout << betrag_In << " Yuan sind " << betrag_Out << " Kronen\n\n";
break;
} else {
cout << "Unbekannte Waerung. Bitte neu eingeben ";
cin >> waerung_Out;
goto YUAN;
}
case 'K':case 'k':
KRONEN:
if (waerung_Out=='E' || waerung_Out=='e') {
betrag_Out=betrag_In/Euro_KR;
cout << betrag_In << " Kronen sind " << betrag_Out << " Euro\n\n";
} else if (waerung_Out=='D' || waerung_Out=='d') {
betrag_Out=betrag_In/USD_KR;
cout << betrag_In << " Kronen sind " << betrag_Out << " Dollar\n\n";
} else if (waerung_Out=='P' || waerung_Out=='p') {
betrag_Out=betrag_In/GBP_KR;
cout << betrag_In << " Kronen sind " << betrag_Out << " Pfund\n\n";
} else if (waerung_Out=='J' || waerung_Out=='j') {
betrag_Out=betrag_In/JY_KR;
cout << betrag_In << " Kronen sind " << betrag_Out << " YEN\n\n";
} else if (waerung_Out=='C' || waerung_Out=='c') {
betrag_Out=betrag_In/CY_KR;
cout << betrag_In << " Kronen sind " << betrag_Out << " Yuan\n\n";
} else {
cout << "Unbekannte Waerung. Bitte neu eingeben ";
cin >> waerung_Out;
goto KRONEN;
}
default:
cout << "Die Waerung '" << waerung_In << "' ist nicht bekannt. Bitte passende Waerung eingeben: ";
cin >> waerung_In;
goto RECHNUNG;
}
//Abfrage ob weitere Umrechungen getätigt werden wollen
cout << "Wollen Sie weitere Betraege umrechnen? [J/N] ";
cin >> weiter;
if (weiter=='J' || weiter=='j'){
system("cls");
goto START;
}
return 0;
}
Alles anzeigen