diff --git a/Sonderuebung/WiSe24-25/SU04_2024_11_12_Unterprogramme_Testen-Debuggen/02_schaltjahre.f95 b/Sonderuebung/WiSe24-25/SU04_2024_11_12_Unterprogramme_Testen-Debuggen/02_schaltjahre.f95 new file mode 100644 index 0000000000000000000000000000000000000000..c05a0b19ba6972be9db5597ff81907aa5096bd54 --- /dev/null +++ b/Sonderuebung/WiSe24-25/SU04_2024_11_12_Unterprogramme_Testen-Debuggen/02_schaltjahre.f95 @@ -0,0 +1,43 @@ +program schaltjahre + implicit none + + integer :: start, ende, i + + + write(*,*) "Es werden alle Schlatjahre innerhalb von einem Intervall berechnet." + write(*,*) "Gebe die Ober- und Untergrenze an!" + + do !test ob eingegbene daten korrekt + read(*,*) start, ende + if (start <= ende .and. start >= 0) then + if (ende - start <= 2000) then !begrenzung lƤnge des intervalls + exit + else + write(*,*) "Fehler: Das Intervall ist zu groĆ. Bitte max. 2000 Jahre lang." + end if + else + write(*,*) "Fehler: Untergrenze ist groesser als Obergrenze oder Grenzen sind negativ." + end if + write(*,*) "Gib die Unter- und Obergrenze erneut ein!" + end do + + + ! berechne erstes potenzielles schaltjahr (teilbar durch 4) + if (MOD(i,4) /= 0) start = start + 4 - MOD(start,4) + + if (start <= ende) then + write(*,*) "Die folgenden Jahre sind Schaltjahre:" + + ! Teste alle potenziellen Schaltjahre im Intervall + do i = start, ende, 4 ! wegen step=4 sind alle i durch 4 teilbar + + if ( .NOT. MOD(i, 100) == 0 .OR. MOD(i, 400) == 0) then ! nicht durch 100 teilbar oder durch 400 teilbar + write(*,*) i + end if + + end do + else + write(*,*) "Es gibt keine Schaltjahre im gegebenen Intervall." + end if + +end program schaltjahre \ No newline at end of file