Ergebnis 1 bis 6 von 6

Thema: [C++] Problem mit Funktion und if-Anweisung

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    also erstmal zu deiner zweiten Frage: Das das Programm bei einer falschen Berechnung abbricht ohne eine Ausgabe anzuzeigen, sollte daran liegen, dass bei
    Code:
     else 
            std::cout << "Falsch! ";
            std::cin.get();
    die geschweiften Klammern fehlen. So sollte es klappen:
    Code:
     else 
    {
            std::cout << "Falsch! ";
            std::cin.get();
    }
    Nun zu den Funktionen: Wenn du die Funktion ohne ein cout aufrufst, kann das Ergebnis nicht angezeigt werden, weil ohne cout nun mal keine Ausgaben gemacht werden. Du musst in deinem Beispiel also entweder die Funktion mit cout aufrufen, oder aber in der Funktion selber statt dem return (x+y) schreiben: cout<<x+y. Dann kannst du die Funktion auch ohne cout aufrufen.
    Warum dir bei deiner dritten Möglichkeit die Zeilen vertauscht werden, kann ich dir so auf die schnelle aber auch nicht sagen.

  2. #2
    Zitat Zitat von NiKrYss
    also erstmal zu deiner zweiten Frage: Das das Programm bei einer falschen Berechnung abbricht ohne eine Ausgabe anzuzeigen, sollte daran liegen, dass bei
    Code:
     else 
            std::cout << "Falsch! ";
            std::cin.get();
    die geschweiften Klammern fehlen. So sollte es klappen:
    Code:
     else 
    {
            std::cout << "Falsch! ";
            std::cin.get();
    }
    Hmm, funktioniert leider auch nicht. Wenn ich bei else ebenfalls 2 geschweifte Klammern setzte dann funktioniert nachher auch das "Richtig" nicht mehr. Ich fasse noch einmal zusammen, bei welche Schreibweisen nun was passiert:


    Code:
    if (result == firstnumber + secondnumber) 
        {
           std::cout << "Richtig! ";
           std::cin.get();
           }
        else 
        {
            std::cout << "Falsch! ";
            std::cin.get();
            }
    4 Klammern: Bei dieser Art klappt weder das Richtig noch das Falsch. Beide werden nicht (oder eben nur extrem kurz, da es vllt. ein Problem mit std::cin.get(); gibt, angezeigt.

    Code:
    if (result == firstnumber + secondnumber) 
        {
           std::cout << "Richtig! ";
           std::cin.get();
           }
        else    
            std::cout << "Falsch! ";
            std::cin.get();
    2 Klammern bei true: Mit dieser Schreibweise wird nur "Richtig" angezeigt (natürlich nur falls die Variable result auch gleichgross ist, wie first- und secondnumber zusammen).

    Code:
    if (result == firstnumber + secondnumber) 
           std::cout << "Richtig! ";
           std::cin.get();
        else 
        {   
            std::cout << "Falsch! ";
            std::cin.get();  
         }
    Mit 2 Klammern bei false gibt der Compiler ein Syntax error before else an.

    Code:
    if (result == firstnumber + secondnumber) 
           std::cout << "Richtig! ";
           std::cin.get();
    else 
            std::cout << "Falsch! ";
            std::cin.get();
    Ohne geschweifte Klammer gibt der Compiler ein Syntax error before else an.
    Irgendwie komme ich einfach nicht drauf, mit was der Compiler ein Problem hat?


    Die erste Frage wäre aber geklärt, vielen Dank NikrYss.

    Mfg Biosfear

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •