if - else Anweisung



  • hab diesen Code hier:

    #include <iostream.h>
    #include <conio.h>
    
    int main()
    { int flag;
      cout << "Geben sie den flag-Wert ein: ";
      cin >> flag;
      if (flag == 1)
      {cout << "Hei\341";}
         else if (flag == 2)
         {cout << "Lauwarm";}
              else if (flag == 3)
              {cout << "Kalt";}
      else {cout << "Au\341erhalb des Bereichs";}
      getch();
    }
    

    Wenn ich jetzt einen Buchstabe etc. eingebe, gibt er immer lauwarm aus.
    Wieso ?
    Hat wohl was mit dem Integer zu tun. Komm aber nicht drauf.



  • Folgendes funktioniert bei mir, Änderung mit Kommentar

    #include <iostream>		 // nicht iostream.h
    #include <conio.h> 
    using namespace std;		// Für cout und cin erforderlich
    							// es müsste sonst std::cout heissen
    
    int main() 
    { int flag; 
    
      cout << "Geben sie den flag-Wert ein: "; 
      cin >> flag; 
    
      if (flag == 1) 
    	{cout << "Hei\341";} 
      else if (flag == 2) 
        {cout << "Lauwarm";} 
      else if (flag == 3) 
        {cout << "Kalt";} 
      else {cout << "Au\341erhalb des Bereichs";} 
    
      getch(); 
    
      return 0;				 // Wenn du int main() definierst,
    							// solltest du auch einen Wert
                                // zurückgeben
    }
    


  • Ähm, bei mir funktioniert der Quelltext (C++ Builder)
    Du hast Visual C++.
    🙄



  • Huch, sorry, aber dann weiss ich auch nicht. Bei mir wird nach Eingabe eines Buchstabens "Außerhalb des Bereichs" ausgegeben.



  • *nachobenschieb*
    Immer noch keine Lösung?



  • Ich habe das Programm eben mit VS C++ .NET und dem C++ Builder 5 getestet und beide machen genau das was sie sollen. Bei der Eingabe vo 1, 2 oder 3 wird je nach dem Heiß, Lauwarm oder Kalt ausgegeben. Bei Eingabe eines Buchstaben wird "Außerhalb des Bereichs" ausgegeben.

    Ws mich eigentlich gewundert hat ist, das der Builder trotz

    std::cin.sync();
    std::cin.clear();
    std::cin.get();
    

    nicht gehalten hat und ich getch(); benutzen musste.

    Code-Hacker



  • OK, dann ist es wohl ein Bug vom Builder. 🙄

    Mit Devcpp hat's nun auch funktioniert.



  • wennn du einen Buchstaben eingibst, wandelt der Compiler den Buchstaben in eine Zahl um (ASCII), z.B. A=58 (glaub ich jedenfalls 🤡 )

    Naja und da laut ASCII-Code alle Buchstaben einen höheren wert haben als 3 kommt immer "Außerhalb des Bereichs" an.

    Das müsste eigentlich der Grund sein, aber woher soll ich das schon wissen 😃


Anmelden zum Antworten