Problem bei Umrechnung Meter in Fuß
-
Hallo,
ich bin bin absolute C++ Anfängerin und habe ein Problem mit diesem Quellcode:
#include <iostream> using namespace std; int main () { double meter = 0.0; while (1) { cout << "Meter: "; cin >> meter; if (meter <= 0) { cout << "Ungueltiger Wert! Bitte Eingabe wiederholen."; } cout << "Feet: " << meter * 3.2808399 << endl; } return 0; }
Sogesehen sind keine Fehler in dem Code, ich möchte aber nicht, dass ein ungültiger Wert noch in Feet umgerechnet wird, nachdem angezeigt wird, dass dieser ja falsch ist... Wie kann ich dies verhindern?
Vielen Dank!
-
^nutze die macht des "else"
-
das habe ich schon versucht, aber anscheinend nicht richtig eingebaut....
Kann mir jemand erklären wie das richtig geht?
-
Da ich auf rotblond(e) stehe, helfe ich mal
if (meter <= 0) { cout << "Ungueltiger Wert! Bitte Eingabe wiederholen."; } else { cout << "Feet: " << meter * 3.2808399 << endl; }
-
AHHH klasse! Vielen Dank.
Wie kann ich es jetzt noch hinbekommen, dass er nach dem "Ungültiger Wert! Bitte Eingabe wiedeholen." in die nächste Zeile springt?
Mit endl; funktioniert es nicht....
-
Mit \n hat es funktioniert...
-
rotblond schrieb:
das habe ich schon versucht, aber anscheinend nicht richtig eingebaut....
Kann mir jemand erklären wie das richtig geht?So:
#include <iostream> #include <limits> // numeric_limits<> namespace { const double METER_TO_FUSS = 1./(0.0254*12); // 1"=2,54cm 1ft=12"=12*2,54cm } int main() { using namespace std; do { for( double meter; cout << "Meter: ", cin >> meter; ) { cout << "Feet: " << meter*METER_TO_FUSS << "ft" << endl; } cout << "Eingabe ungueltig" << endl; cin.clear(); // Fehlerflag zurücksetzen cin.ignore( numeric_limits< streamsize >::max(), '\n' ); // Rest der Zeile überlesen } while( cin ); return 0; }
rotblond schrieb:
ich bin bin absolute C++ Anfängerin ..
falls Du was nicht verstehst - was wahrscheinlich ist - so sage bitte WAS Du nicht verstehst. Mehr zu numeric_limits, clear und ignore gibts es in der Cpp-Referenz.
Gruß
Werner