cin.sync(); cin.clear; funktioniert nicht!
-
Hallo zusammen,
ich lerne gerade mit einem Buch C++. Am Ende des Kapitels 'Funktionen' sind nun übungsaufgaben. Ich soll eine inline-Funktion Max schreiben, die das Maximum von x und y zurückgibt und dann noch Max überladen durch eine weitere inline-Funktion für Argumente vom Typ char.Wenn ich beim Testen der ersten inline-Funktion statt einer Gleitpunktzahl ein Buchstabe eingebe dann kommt eine entsprechende Meldung und eigentlich solle es dann ungestört weitergehen. Das funktioniert aber nicht.
./209_2 Geben Sie bitte zwei Zahlen ein. 4 g Fehlerhafte Eingabe! Geben Sie bitte zwei Buchstaben ein. b x = g ist das MaximumHier ist der Code: was habe ich falsch gemacht?
#include <iostream> using namespace std; inline double Max(double x, double y) { return ((x < y) ? y : x); } inline char Max(char x, char y) { return ((x < y) ? y : x); } int main() { double x, y; char xc, yc; cout << "Geben Sie bitte zwei Zahlen ein." << endl; if( cin >> x && cin >> y) { cout << (x == Max(x, y) ? "x = " : "y = ") << Max(x, y) << " ist das Maximum" << endl; } else { cout << "Fehlerhafte Eingabe!" << endl; } cin.sync(); cin.clear(); // Falls eine falsche Eingabe gemacht wurde. cout << "\n\nGeben Sie bitte zwei Buchstaben ein." << endl; if(cin >> xc && cin >> yc) { cout << (xc == Max(xc, yc) ? "x = " : "y = ") << Max(xc, yc) << " ist das Maximum" << endl;} else { cout << "Fehlerhafte Eingabe!" << endl;} return 0; }Vielen Dank.
powerflo
-
cin.sync(); cin.clear(); // Falls eine falsche Eingabe gemacht wurde cin.ignore(numeric_limits<streamsize>::max(), '\n'); // Puffer löschenAußerdem, die char Funktion wird hier implizit gecastet falls du zum Beispiel ein int eingibst. Da int auf char und char auf int abzubilden ist.
-
Ach und ....
#include <limits>habe ich vergessen.
-
Vielen Dank. Jetzt klappt es

DeleteBuffer schrieb:
Außerdem, die char Funktion wird hier implizit gecastet falls du zum Beispiel ein int eingibst. Da int auf char und char auf int abzubilden ist.
Bin wie gesagt ein Anfänger. Muss ich das verstehen?
DeleteBuffer schrieb:
Ach und ....
#include <limits>habe ich vergessen.
Wieso? Es hat auch ohne funktioniert...
Gruß
powerflo