Erste If-Else-Abfrage
-
Guten Abend liebe Forumuser, hab vor kurzem bedingt durch mein Maschinenbaustudium erste Einblicke in C++ bekommen und Interesse daran gefunden. Leider trete ich direkt auf ein kleines Problem mit der if Else Abfrage. Hier ein kleiner Ausschnitt:
int Zahl = 0; //Deklaration für Basisdatentyp integer und Variablennamen Zahl cout << "Bitte eine Ganzzahl eingeben: "; //Ausgabe einer Aufforderung cin >> Zahl; //einlesen der Tastatur if (cin >> Zahl) { cout << "Sie gaben die Zahl " << Zahl << " ein \n"; //Ausgabe der eingelesenen Ganzzahl } else { cerr << "Fehler bei der Eingabe!\n"; }
Theoretisch müsste mir bei richtiger Eingabe einer Ganzzahl eine direkte Ausgaben gegeben werden mit eingetippter Ganzzahl. Jedoch muss ich erst eine Zahl einlesen, danach folgt eine weitere Aufforderung. Erst nach nochmaligen einlesen wird dann die Ganzzahl ausgegeben
Bei Falscheingabe wird Fehlermeldung direkt ausgegeben!
Bitte um Hilfe
Vielen Dank im Voraus
-
Du lässt die Zahl doch zwei Mal einlesen
Lösch mal Zeile 4.
-
Ach, Vielen Dank für die schnelle Hilfe.
Hab wie du vorgeschlagen hast Zeile 4 entfernt.
Löschen des "cin >>" innerhalb Zeile 6 der If Else Abfrage hätte selben Effekt weil Variable Zahl mittels Eingabe definiert wird!
-
Nö, dann bliebe ja in Zeile 6 nur
if(Zahl)
übrig. Mal angenommen, Du würdest als Zahl die 0 (Gilt die überhaupt als Ganzzahl?) eingeben, würde Dein Programm dann in den else-Zweig laufen.
Denselben Effekt hättest Du dann, wenn Du die Zeile 6 in
if(cin)
ändern würdest. Damit wird dann geprüft, ob der Eingabestream noch okay ist, genau so, wie wenn Du einfach die Zeile 4 löschen würdest.
-
Wenn ich Zeile 4 stehen lasse und Zeile 6 ändere , wird eine Ganzzahl (0 gilt hier nicht als Ganzzahl) eingelesen und nimmt den Wert der Variable Zahl an.
Mit der Abfrageif (Zahl)
wird doch, bedingt durch das deklarieren auf den Datentyp integer, überprüft ob eine Ganzzahl eingelesen wurde und diese dann auch ausgegeben.
Wird keine Ganzzahl eingegeben läuft er direkt über in den Else zweig.
-
Sery0ga schrieb:
if (Zahl)
wird doch, bedingt durch das deklarieren auf den Datentyp integer, überprüft ob eine Ganzzahl eingelesen wurde und diese dann auch ausgegeben.
Wird keine Ganzzahl eingegeben läuft er direkt über in den Else zweig.
Nein, es wird geprüft, ob Zahl ungleich 0 ist, d.h. true, sonst wird else ausgeführt. Ob jemals etwas eingegeben wurde, weiß das Programm nicht mehr.
-
Sery0ga schrieb:
Mit der Abfrage
if (Zahl)
wird doch, bedingt durch das deklarieren auf den Datentyp integer, überprüft ob eine Ganzzahl eingelesen wurde
Nein, wie kommst du darauf?
WennZahl
ein Integer ist, dann istif (Zahl)
gleichbedeutend mitif (Zahl != 0)
.
-
Bin davon ausgegangen, das vorher durch das einlesen cin der Variable Zahl der Wert 10 zugewiesen wurde, was ja eine Ganzzahl ist.
Vorher wird Zahl als int deklariert.Deswegen dachte ich das mit if (Zahl) also gefragt wird ob es sich um einen Integer handelt.
Lag damit aber falsch, danke für die Belehrung
-
Dir ist schon klar dass C++ statisch typisiert ist, oder?
Und dassint
kurz für integer ist was das englische Wort für Ganzzahl ist.