diff --git a/Sonderuebung/WiSe24-25/SU03_2024_11_05_IF_DO/04_taschenrechner_mit_do.f95 b/Sonderuebung/WiSe24-25/SU03_2024_11_05_IF_DO/04_taschenrechner_mit_do.f95 new file mode 100644 index 0000000000000000000000000000000000000000..1ae0f29697e2170cf8b4fc5a3a45bf6fcf0cdf48 --- /dev/null +++ b/Sonderuebung/WiSe24-25/SU03_2024_11_05_IF_DO/04_taschenrechner_mit_do.f95 @@ -0,0 +1,53 @@ +program taschenrechner + implicit none + + INTEGER :: a, b ! Variablen + CHARACTER :: op ! Operator + INTEGER :: res ! Result + + CHARACTER :: end + + DO + WRITE(*,*) "Gebe zwei Zahlen ein!" + READ(*,*) a, b + + WRITE(*,*) "Gebe einen Rechenoperator (+,-,*,/) ein!" + DO ! Eingabe wird wiederholt, wenn der Operaor ungültig ist + READ(*,*) op + IF (op == "+" .OR. op == "-" .OR. op == "*" .OR. op == "/") EXIT + WRITE(*,*) "Die Eingabe ist ungueltig. Gebe einen neuen Operator ein." + END DO + + SELECT CASE (op) + CASE("+") + res = a + b + CASE("-") + res = a - b + CASE("*") + res = a * b + CASE("/") + + DO ! Hiermit wird Division durch 0 ausgeschlossen, ohne die Rechnung abzubrechen + IF (b == 0) THEN + WRITE(*,*) "Division durch 0 ist veboten! Gebe die zweite Zahl erneut ein." + READ(*,*) b + END IF + END DO + + res = a / b + + CASE DEFAULT + WRITE(*,*) "Der Eingegebene Operator ist ungueltig." + END SELECT + + + WRITE(*,*) "Das Ergebnis ist ", res + + ! Austrittsbedingung + WRITE(*,*) "Soll eine weitere Rechnung statt finden? (j/n)" + READ(*,*) end + IF(end == "n") EXIT + + END DO + +end program taschenrechner \ No newline at end of file