Fehler bei Eingabe
-
Hey Leute!
Schaut euch bitte folgenden Code an:Main.cpp
#include <iostream> #include <conio.h> #include <windows.h> #include "konto_m.h" using namespace std; int main() { Konto_M *Konto1 = new Konto_M; char a; while(1) { cout << endl << "Was moechten Sie tun?" << endl << "1. Kontostand pruefen" << endl << "2. Einzahlen" << endl << "3. Auszahlen" << endl << "4. Beenden" << endl << endl; a = getch(); switch(a) { case '1': Konto1->fGetName(); Konto1->fGetKontostand(); break; case '2': Konto1->fSetEinzahlen(); break; case '3': Konto1->fSetAbheben(); break; case '4': exit(0); default: break; } } return 0; }konto_m.h
#ifndef KONTO_M_H #define KONTO_M_H using namespace std; class Konto_M { private: float fKontostand; unsigned int iKontonummer; string sVorname; string sNachname; public: //Konstruktor Konto_M(); //Destruktor ~Konto_M(); //SetFunktionen void fSetName(); void fSetAbheben(); void fSetEinzahlen(); //GetFunktionen void fGetName(); void fGetKontostand(); }; #endif // KONTO_M_Hkonto_m.cpp
#include <iostream> #include <float.h> #include <string> #include <cstdio> #include "konto_m.h" // class's header file using namespace std; // class constructor Konto_M::Konto_M() { fKontostand = 0.0; sVorname = "Lionel"; sNachname = "Messi"; iKontonummer = 13371337; } // class destructor Konto_M::~Konto_M() { cout << endl << "Das Objekt wurde terminiert!" << endl; } /* float fKontostand; string sVorname; string sNachname; */ //SetFunktionen void Konto_M::fSetName() { // } void Konto_M::fSetAbheben() { cout << "Geben Sie den Betrag an, den Sie abheben moechten: " << endl; float a = 0.0; cin >> a; a = (int)(a*100+0.5)/100.0; fKontostand = fKontostand - a; cout << "Ihr aktueller Kontostand betraegt nun: " <<fKontostand << endl; } void Konto_M::fSetEinzahlen() { cout << "Geben Sie den Betrag an, den Sie einzahlen moechten: " << endl; float a; cin >> a; if ( cin.fail() ) {cout<<"Error!";} else { a = (int)(a*100+0.5)/100.0; fKontostand = fKontostand + a; cout << "Ihr aktueller Kontostand betraegt nun: " << fKontostand << endl; } a; } //GetFunktionen void Konto_M::fGetName() { cout << "Guten Tag Herr " << sVorname << " " << sNachname << endl; } void Konto_M::fGetKontostand() { cout << "Ihr Kontostand betraegt: " << fKontostand << endl; cout << "Ihre Kontonummer ist: " << iKontonummer << endl; }Wenn ich nun auf Messis Konto einzahlen möchte, dann fuktioniert alles wunderbar! Allerdings kommt es zu Fehlern, wenn ich chars eintippe. Dann komme ich zwar in die Auswahl, aber nicht mehr in die Eingaben!
Habt ihr eine Idee? Ihr habt sicher eine Idee!
Grüße
-
kWenn aeine nEingabe vfehlschlägt, kdann vist ader nStream kdanach kin aeinem nFehlerzustand. pDu vmusst adaher aerst aden nFehlerzustand pmittels clear() vaufheben, kbevor pdu aweitere nLeseaktionen aauf adem nStream vmachen vkannst. vDenk adaran, kdass kda ahöchstwahrscheinlich pnoch aunerwünschte nZeichen pim nStream vsind! aDiese vwillst pdu awahrschinlich avor aweiteren nAktionen pmittels ignore() vüberspringen.
-

-
SeppJ schrieb:
kWenn aeine nEingabe vfehlschlägt, kdann vist ader nStream kdanach kin aeinem nFehlerzustand. pDu vmusst adaher aerst aden nFehlerzustand pmittels clear() vaufheben, kbevor pdu aweitere nLeseaktionen aauf adem nStream vmachen vkannst. vDenk adaran, kdass kda ahöchstwahrscheinlich pnoch aunerwünschte nZeichen pim nStream vsind! aDiese vwillst pdu awahrschinlich avor aweiteren nAktionen pmittels ignore() vüberspringen.
Schöne UN-Parodie. Habe einen Moment gebraucht.
