diff --git a/Sonderuebung/WiSe24-25/SU03_2024_11_05_IF_DO/02_taschenrechner_mit_if_v2.f95 b/Sonderuebung/WiSe24-25/SU03_2024_11_05_IF_DO/02_taschenrechner_mit_if_v2.f95 new file mode 100644 index 0000000000000000000000000000000000000000..2956f07d0c2e8808b9123b4fd48d5afe747154be --- /dev/null +++ b/Sonderuebung/WiSe24-25/SU03_2024_11_05_IF_DO/02_taschenrechner_mit_if_v2.f95 @@ -0,0 +1,41 @@ +! Enthaelt weniger WRITE Anweisungen (weniger Redudanz) als 01_taschenrechner +! benoetigt dafuer eine extra Logical-Variable ob die Rechnung durchgefuehrt wurde +! (wegen Division durch 0) + +program taschenrechner + implicit none + + INTEGER :: a, b ! Variablen + CHARACTER :: op ! Operator + INTEGER :: res ! Result + LOGICAL :: calc = .true. + + WRITE(*,*) "Gebe zwei Zahlen ein!" + READ(*,*) a, b + + WRITE(*,*) "Gebe einen Rechenoperator (+,-,*,/) ein!" + READ(*,*) op + + IF (op == "+") THEN + res = a + b + ELSEIF (op == "-") THEN + res = a - b + ELSEIF (op == "*") THEN + res = a * b + ELSEIF (op == "/") THEN + + IF (b == 0) THEN + WRITE(*,*) "Division durch 0 ist veboten!" + calc = .false. + ELSE + res = a / b + END IF + + ELSE + WRITE(*,*) "Der Eingegebene Operator ist ungueltig." + calc = .false. + END IF + + IF (calc) WRITE(*,*) "Das Ergebnis ist ", res + +end program taschenrechner \ No newline at end of file