Else Befehl - Fehler in Quelltext

K

kuki122

Guest
Hi,

Ich habe folgendes Programm geschrieben:


Code:
// Wasser  - Aggregatzustände

#include <stdio.h>

main () {
     int temp;
     printf ("\n Aggregatzustaende von Wasser\n\n\n");
     printf ("Bitte geben sie die gewuenschte Temperatur ein: ");
     scanf ("%i",& temp);
     
     if (temp > 0 && temp < 100) {
              printf ("\n\n\nBei dieser Temperatur ist Wasser fluessig! \n\n\n");
              }
     if (temp <= 0 && temp > -275) {
              printf ("\n\n\nBei dieser Temperatur ist Wasser gefroren! \n\n\n");
              }
     if (temp >= 100 && temp < 10000) {
              printf ("\n\n\nBei dieser Temperatur ist Wasser gasfoermig! \n\n\n");
              }
     if (temp <=-275) {
              printf ("\n\n\nDer absolute Nullpunkt ist erreicht! (-275 Grad Celsius) \n\n\n");              }
              }
     else 
              printf ("Dies ist eine ungueltige Eingabe!");
     
     
     system ("pause");
}

Leider funktioniert der else Befehl nicht so, wie ich das gerne hätte.
Bei jeder eingabe wird dieser mit abgearbeitet.

Gedacht ist er für Eingaben über 10.000 und Buchstaben bzw. Sonderzeichen.
also alles, was aus Möglichkeiten in des if Blocks fällt. :)

Findet jemand den Fehler? :(
 
Das Problem ist, dass sich das else nur auf den letzten if-Block bezieht. Also jedesmal, wenn if(temp <=-275) nicht erfüllt ist, wird der else-Zweig ausgegeben. Die anderen ifs wurden schon vorher, unabhängig abgearbeitet.
Was du willst ist eine if - else if -else if - else if - else Verkettung.
Code:
     if (temp > 0 && temp < 100) {
              printf ("\n\n\nBei dieser Temperatur ist Wasser fluessig! \n\n\n");
              }
     [b]else[/b] if (temp <= 0 && temp > -275) {
              printf ("\n\n\nBei dieser Temperatur ist Wasser gefroren! \n\n\n");
              }
    
    [....]
     else 
              printf ("Dies ist eine ungueltige Eingabe!");

Damit werden aber auch nur ungültige Eingaben im int-Bereich abgefangen, wenn scanf nicht fehlgeschlagen ist. Buchstaben und Sonderzeichen musst du schon vorher abfangen. Aber das ist ein eigenes Thema und führt auch jetzt zu weit.

Und main gibt int zurück :).
 
Zurück