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 Abfrage

    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.



  • 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?
    Wenn Zahl ein Integer ist, dann ist if (Zahl) gleichbedeutend mit if (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 dass int kurz für integer ist was das englische Wort für Ganzzahl ist.


Anmelden zum Antworten