Auf Integer prüfen
-
Wie kann man denn eine eingebene Zahl auf Integer überprüfen ?
int eingabe; cout << "Integer eingeben: "; cin >> eingabe; if (cin.fail()) ...
Irgendwie läuft der trotzdem noch durch die Schleife durch, da in der nächsten Eingabe dann die Gleitpunktzahl ausgegeben wird...
-
welche schleife?
-
#include <iostream> #include <stdio.h> #include <limits> // for numeric_limits, -> cin.sync() using namespace std; void wait() { cin.clear(); cin.ignore(cin.rdbuf () -> in_avail () ); cin.get(); } void Eingabe() { int eingabe; cout << "Integer eingeben: "; cin >> eingabe; if (cin.fail()) throw 1; else cout << "Ausgabe: " << eingabe << endl; } int main() { for (;;) { try Eingabe(); catch (int) { wait(); cin.ignore (numeric_limits<streamsize> :: max(), '\n'); cerr << "Kein Integer !" << endl; } } wait(); return 0; }
-
cin.fail() reagiert einmal zu spät...
sorry, aber dazu fällt mir im moment nix mehr ein, als getline mit string und dann prüfen...
-
bool double_Test (const char *zeichen, int laenge) { int i = laenge; for (i = 0; i <= laenge; i++) { if (zeichen[i] == 46) { return true; break; } else return false; } } ... char eingabe[10]; cout << "Integer eingeben: "; cin.getline (eingabe, 10); if (double_Test (eingabe, 10)) ...
Wenn ichs so mach, gibt er alles aus. Hm
-
die
void Eingabe()
{muss heisen
void Eingabe() throw ( int )
{
-
Hallo,
einfach so:
#include <iostream> using namespace std; int main() { int eingabe; if(cin >> eingabe) cout << "ok" << endl; else cout << "nicht ok" << endl; }
BTW: Bei mir läuft dein Programm, zumindest wenn ich den Try-Block mit Klammern versehe. Ich verstehe dein Problem auch ehrlich gesagt gar nicht, was tut es denn was es nicht tun soll?
-
z.B. folgender Ablauf:
Integer eingeben: 2
Ausgabe: 2
Integer eingeben: 5
Ausgabe: 5
Integer eingeben: 10.55
Ausgabe: 10
Integer eingeben: Kein Integer !
Integer eingeben:Da gibt er noch die 10 aus und schreibt die catch-Anweisung in die Eingabe rein.
(edit)
Es ist immer noch so. Im Normalfall dürfte "Ausgabe: 10" nicht kommen und "Kein Integer !" müsste alleine stehen.
Aber es klappt noch nicht wie gewünscht.
-
Lies dir das mal durch vllt. hilft es dir ja
-
Ja danke. Der Link hat mir sehr weitergeholfen.
Jetzt funktioniert's.