Problem mit else if



  • Hab gerade das hier geschrieben:

    #include <stdio.h>

    main() {
    float dampf,normal;
    printf("\nBitte geben Sie die Temperatur in Grad Celsius ein:");
    scanf("%f",&dampf);
    if (dampf>=100)
    printf("\nBei dieser Temperatur verdampft Wasser");
    scanf("%f",&normal);
    else if (normal>0 && normal<100)
    printf("\nBei dieser Temperatur bleibt das Wasser fluessig");
    else
    printf("\nBei dieser Temperatur gefriert das Wasser");
    }

    und beim compilen sagt Visual C++ das hier:

    error C2181: illegal else without matching if
    Error executing cl.exe.

    ich find irgendwie keinen Fehler. Kann mir wer helfen?



  • Ich hab zwar nicht verstanden, was du mit dem obigen Code bewirken willst, aber ich denke ich weiß was das Ergebnis sein soll.
    Probier mal das aus:

    int main()
     {
      float wasser;
      printf("\nBitte geben Sie die Temperatur in Grad Celsius ein:");
      scanf("%f",&wasser);
    
      if (wasser>0 && wasser<100)
       printf("\nBei dieser Temperatur bleibt das Wasser fluessig");
    
      else
       {  
        if (wasser>=100)
         printf("\nBei dieser Temperatur verdampft Wasser");
    
        else
         printf("\nBei dieser Temperatur gefriert das Wasser");
       }
     }
    

    Bei deinem code hat das 'else' von 'else if' kein zugehöriges 'if' denke ich.
    😉



  • Hallo,
    Dein Fehler ist ganz einfach. Wenn du if benutzt wird nur die nächste Zeile als if-Zweig gewertet es sei denn du klammerst den Bereich der in den if zweig hinein soll. Dein Code müßte also korrekt lauten:

    main() {
    float dampf,normal;
    printf("\nBitte geben Sie die Temperatur in Grad Celsius ein:");
    scanf("%f",&dampf);
    if (dampf>=100) 
    {  // Klamerung des if-Zweiges
    printf("\nBei dieser Temperatur verdampft Wasser");
    ... weiterer Code im if-Zweig
    } // Ende if
    else 
    { // Begin Else-Zweig
    if (dampf>0 && dampf<100)
    { /Nächeser if-Zweig
    printf("\nBei dieser Temperatur bleibt das Wasser fluessig");
    ... weiterer Code zum if-Zweig
    }// Ende if
    else
    {// Nächstes else
    printf("\nBei dieser Temperatur gefriert das Wasser");
    }//ende else innere Schachtel
    }// ende else 
    }// ende main
    


  • ja so in der Art wars doch gemeint 😉

    Aber ich evrsteh immer noch nicht ganz warum zwei Variablen und zwei Eingaben ? 😕

    [ Dieser Beitrag wurde am 31.05.2003 um 17:51 Uhr von CrazyOwl editiert. ]



  • wie meinst du 2 variablen und 2 eingaben?

    bei der version von christilon kommt noch ne warnung:

    "warning C4101: 'normal' : unreferenced local variable"

    die von owl funzt einwandfrei 🙂

    vielen dank für die lösungen.



  • Er meint, dass du zwei Variablen verwendest, um Daten einzulesen, obwohl du auch alles mit einer Variablen machen könntest, wie er es in seinem Codebeispiel gemacht hat.
    Die Warnung resultiert daraus, dass die Variable normal in dem Code nicht verwendet wird und ihr auch kein Wert zu gewiesen wird.



  • achso, stimmt, geht wirklich einfacher 🙂
    ok, funzt jetzt alles, dann mal auf zum nächsten kapitel.

    danke für die hilfe.



  • Original erstellt von Bill Geiz:
    **Er meint, dass du zwei Variablen verwendest, um Daten einzulesen, obwohl du auch alles mit einer Variablen machen könntest, wie er es in seinem Codebeispiel gemacht hat.
    **

    Ja, genau so wars gemeint 😉


Anmelden zum Antworten