Nächste Seite: Aufgabe 2
Aufwärts: Lösungen
Vorherige Seite: Lösungen
  Inhalt
PROGRAM A_01
IMPLICIT NONE
INTEGER :: n,k
INTEGER :: ios
INTEGER :: fak, sum, binominal
! Eingabe ---------------------------------------------------------------------
WRITE(*,'(A)') 'Berechnung der Binominalkoeffizienten in Tabellenform'
DO
WRITE(*,'(A)',ADVANCE='NO') 'Geben Sie bitte n ein: '
READ(*,*,IOSTAT=ios) n
IF (ios==0) THEN
IF ((n>=1) .AND. (n<30)) THEN ! Plausibilitaetstest:
EXIT
ELSE
WRITE(*,*) 'n musz > 0 und < 30 sein!'
ENDIF
ELSE
WRITE(*,*) 'Fehlerhafte Eingabe!'
ENDIF
END DO
! Berechnung und Ausgabe der Tabelle ------------------------------------------
sum=0; fak=1; binominal=1 ! Initialisierung
WRITE(*,'(A)') ' k | n-k | Summe 1 bis k | k! | Binominalkoeff.'
WRITE(*,'(59("-"))')
DO k=1,n
sum=sum+k
fak=fak*k
binominal=binominal*(n-k+1)/k
!------------------------------------------------------------------------------
! sum und fak sollten klar sein;
! (n ueber k) = n!/((n-k)!.k!) = n.(n-1)...(n-k+1)/k!
! n ist fest, k laeuft von 1 bis n;
! k = 1: (n ueber 1) = n/1! = n
! k = 2: (n ueber 2) = n.(n-1)/2! = n/1!.(n-1)/2 = (n ueber 1).(n-1)/2
! k = 3: (n ueber 3) = n.(n-1).(n-2)/3! = n.(n-1)/2!.(n-2)/3 =
! = (n ueber 2).(n-2)/3
! ...
! k: (n ueber k) = (n ueber k-1).(n-k+1)/k
!------------------------------------------------------------------------------
WRITE(*,'(1X,i3," | ",i3,3X,"|",4X,i7,4X,"|",3X,i8," | "i8)') &
k,n-k,sum,fak,binominal
END DO
WRITE(*,'(59("-"))')
END PROGRAM
Reinfried O. Peter
2001-09-07