fortran Code
- PROGRAM iteration
- IMPLICIT NONE
- INTEGER,PARAMETER::i_k=SELECTED_INT_KIND(18), r_k=SELECTED_REAL_KIND(15,307)
- INTEGER(KIND=i_k) :: n,m,x,minimum,maximum,summe
- INTEGER :: fehler
- REAL(KIND=r_k) :: mittel
- DO
- WRITE(*,*) 'Wie viele Zahlen eingeben (n)? '
- READ(*,*,iostat=fehler) n
- ! Fehlerueberpruefung: nur Ganze Zahlen eingeben
- IF(fehler /= 0) THEN
- WRITE(*,*) 'Fehler bei der Eingabe: Nur Natuerliche Zahlen fuer die Anzahl eingegeben!'
- ! Fehlerueberpruefung: Anzahl muss groesser als 0 sein, da sonst sinnlos
- ELSEIF(n.le.0) THEN
- WRITE(*,*) 'Anzahl ist zu klein. Bitte eine groessere Zahl (n>0) eingeben? '
- ! Wenn kein Fehler aufgetreten ist, die Schleife beenden
- ELSE
- EXIT
- END IF
- END DO
- minimum = HUGE(0_i_k)
- maximum = -HUGE(0_i_k)
- write(*,fmt='(" Zahl | Minimum | Maximum | Mittelwert ")')
- write(*,fmt='("---------+---------+---------+------------")')
- DO m=1,n
- zahl_einlesen: DO
- WRITE(*,fmt='(I2,": ")',advance='no') m
- READ(*,*,iostat=fehler) x
- ! Fehlerueberpruefung: nur Ganze Zahlen eingeben
- IF(fehler /= 0) THEN
- WRITE(*,*) 'Fehler bei der Eingabe: Nur Natuerliche Zahlen eingegeben!'
- ! Wenn kein Fehler aufgetreten ist, die Schleife 'zahl_einlesen' beenden
- ELSE
- EXIT zahl_einlesen
- END IF
- END DO zahl_einlesen
- ! Berechnung der Zwischenwerte mit dem aktuellen Wert von x
- IF(x.lt.minimum) minimum=x
- IF(x.gt.maximum) maximum=x
- summe = summe + x
- mittel = REAL(summe,r_k) / m
- ! Ausgabe der Zwischenwerte
- WRITE(*,fmt='(10(" "),I8," |")',advance='no') minimum
- WRITE(*,fmt='(I8," | ")',advance='no') maximum
- WRITE(*,fmt='(I8)') summe
- END DO
- END PROGRAM iteration