Falschen Typ bei cinEingeben

Prophet05

Erfahrenes Mitglied
Hi,
Ich habe ein Programm geschrieben in dem ich mit cin ganz normal eine float Variable abfrage.
Ich habe ein bisschen herum getestet und wenn ich da jetzt ein keine Zahl sondern irgendetwas anderes eingebe durchläuft er zwar die Rechnung und liefert 0 zurück. Wenn ich nun aber erneut zu diesem Teil des Programms komme überspringt er die Eingabe einfach und macht danach wieder weiter als ob ich 0 eingegeben hätte.
Ich habe schon verschidene sachen versucht:
Code:
 try
 {
    cin << i;
 }
 catch(...)
 {
    i = 0;
 }
oder mit fflush(); den buffer leeren. Aber nichts von alledem hat funktioniert. Deswegen wollte ich mal fragen ob mir einer sagt warum der Fehler auftritt und wie ich ihn beheben kann.

mfg Prophet05
 
Bei cin müssen die "<<"-Dinger in die andere Richtung gehen..so: ">>" oder irre ich mich etwa?
Naja...zu deiner Problemlösung...du könntest doch einfach eine if-abfrage machen ob der eingegebene Wert vom Typ Float ist! Wenn dem nicht so ist muss der User halt erneut einen Wert eingeben und wird darauf hingewiesen das es eine Float-Zahl sein muss!

greetz
daddz
 
habe ich schon versucht auf diese weise:
Code:
 cin >> i;
 if (!(float)i)
 {
 	i = 0;
 }

aber das problem ist ja das er wenn ich erneut zu der stelle komme so tut als ob ich die variable schon eingegeben hätte. als ob er bei einer typ-falschen eingabe das ganze wie einen Text speichert und ihn bei jedem aufruf wieder ausgibt. Wenn ich das richtige eingebe kann ich das ganze immerwieder problemlos aufrufen und nichts passiert.
 
moin


Zu den <<:
Bei cin MÜSSEN die Pfeile auf die Variable zeigen.
Bei cout müssen die Pfeile auf cout zeigen.


mfg
umbrasaxum
 
Hi,
ja ich habe mich vertippt bei dem cin oben (sry:-)).
ICh würde gerne auf die Frage zurückkommen:
...aber das problem ist ja das er wenn ich erneut zu der stelle komme so tut als ob ich die variable schon eingegeben hätte. als ob er bei einer typ-falschen eingabe das ganze wie einen Text speichert und ihn bei jedem aufruf wieder ausgibt. Wenn ich das richtige eingebe kann ich das ganze immerwieder problemlos aufrufen und nichts passiert.

mfg Prophet05
 
Zurück