/* ÜBUNG 6, AUFGABE 5 */ #include /* Makros und Deklarationen für Standard Ein-/Ausgabe */ int main(int argc, char *argv[]) /* Hauptprogramm main, immer gleich */ { int zahl1; /* Ganzzahl-Variable */ int zahl2; /* Ganzzahl-Variable */ int gelesen; /* Ganzzahl-Variable */ char zeichen; /* Zeichen-Variable */ printf("Bitte geben Sie die erste Zahl ein: "); /* Eingabeaufforderung ausgeben */ gelesen = scanf("%d", &zahl1); /* Zahl lesen und in der Speicherstelle von "zahl1" speichern, */ /* Anzahl gelesener Werte in "gelesen" merken. */ if(gelesen != 1) /* Ist die Anzahl gelesener Variablen ungleich 1? */ { printf("Sie haben leider keine Zahl eingegeben!\n"); /* Meldung ausgeben */ return 1; /* Programm mit Fehlercode beenden */ } printf("Bitte geben Sie die zweite Zahl ein: "); /* Eingabeaufforderung ausgeben */ gelesen = scanf("%d", &zahl2); /* Zahl lesen und in der Speicherstelle von "zahl2" speichern, */ /* Anzahl gelesener Werte in "gelesen" merken. */ if(gelesen != 1) /* Ist die Anzahl gelesener Variablen ungleich 1? */ { printf("Sie haben leider keine Zahl eingegeben!\n"); /* Meldung ausgeben */ return 1; /* Programm mit Fehlercode beenden */ } printf("Bitte geben Sie ein Zeichen aus der Menge { + - * / } ein: "); /* Eingabeaufforderung ausgeben */ /* ACHTUNG: Wie Sie vielleicht gemerkt haben, befindet sich im * Tastaturpuffer noch das "Zeilenende"-Zeichen nach Eingabe der * letzten Zahl! Dies muss entweder mit einem weiteren scanf() * "überlesen" werden, oder mit dieser Variante des Format-String * mit Leerzeichen vor %c behandelt werden. */ gelesen = scanf(" %c", &zeichen); /* Zeichen lesen und in der Speicherstelle von "zeichen" speichern, */ /* Anzahl gelesener Werte in "gelesen" merken. */ if(gelesen != 1) /* Ist die Anzahl gelesener Variablen ungleich 1? */ { printf("Sie haben leider kein Zeichen eingegeben!\n"); /* Meldung ausgeben */ return 1; /* Programm mit Fehlercode beenden */ } printf("%d %c %d = ", zahl1, zeichen, zahl2); /* "Operand1 Operator Operand2" = ausgeben. */ if(zeichen == '+') { printf("%d\n", zahl1 + zahl2); } else if(zeichen == '-') { printf("%d\n", zahl1 - zahl2); } else if(zeichen == '*') { printf("%d\n", zahl1 * zahl2); } else if(zeichen == '/') { if(zahl2 == 0) { printf("Durch 0 darf man nicht teilen!\n"); /* Fehlermeldung ausgeben */ return 1; /* Programm mit Fehlercode verlassen. */ } /* Hier könnte ein "else" stehen, man braucht es aber in diesem Fall nicht. Warum? */ printf("%d\n", zahl1 / zahl2); } else { printf("Ich kenne diese Berechnungsmethode nicht!\n"); /* Falsches Rechenzeichen eingegeben, melden */ return 1; /* und Programm mit Fehlercode verlassen. */ } return 0; /* Programm ohne Fehlercode beenden */ }