Sie sind hier: Fortran > Fortran Programme > Iteration > Lösung

Lösung

Donnerstag 09. November 2006 von
Simon Praetorius
Erst wird abgefragt, wie viele Zahlen eingelesen werden sollen. Das Maximum wird auf die größte, das Minimum auf die kleinste im Rechner darstellbare Zahl gesetzt, so dass jede eingelesene Zahl kleiner bzw. größer als diese Startwerte sind. Dann werden nacheinander Zahlen eingelesen und mit den jeweiligen Maxima/Minima verglichen und eventuell ersetzt.

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
Besucher: 9271 | Permalink | Kategorie: Fortran
Tags:

Kommentar hinzufügen

Dieses Feld bitten nicht ausfüllen: