FORTRAN 90 Lecturer : Rafel Hekmat Hameed University of Babylon Subject : Fortran 90 College of Engineering Year : Second B.Sc. Mechanical Engineering Dep. Examples about Arrays EXAMPLE 4 Write a program that reads the names of five students, reading extents for the four materials and find the average for each student and the number of lessons in which each student failed. program student implicit none integer, dimension (1:5,1:4):: degree character (len=10)::name(5) integer::I,j,k real:: sum , av data degree/45,80,56,32,50,67,32,50,56,50,54,87,54,70,40,33,56,89,36,56/ data name/'ali','ahmed','ameer','murad','noor'/ do i=1,5 k=0 ; sum=0 ; do j=1,4 if (degree(i,j)<50) then k=k+1 endif sum=sum+degree(I,j) enddo av=sum/4.0 if (k .gt. 0) then write(*,70) name(i),k ϭ 70 format ( 2x,a,1x,'fail in',3x,i3) Else Write(*,60) name(i) , av 60 format(2x,a,1x,'aveage=',f6.3) Endif Enddo End EXAMPLE 5 Write a program to find sum of elements of minor diagonal of array b its shape (/3,3/) , and find the summation of elements upper and lower this diagonal. each section of this example solved it in individual subroutine. Program diagonal Implicit none Integer,parameter::n=3 Integer, dimension(n,n)::b Integer::I, j, sum, sumu, suml Read(*,*) ((b(I,j),j=1,n),i=1,n) Call sum_diagonal (b,sum) print*,sum Call sum_upper (b,sumu) Print*,sumu Call sum_lower (b,suml) Print*,suml End Subroutine sum_diagonal (b,sum) Implicit none integer,parameter::n=3 Integer,dimension (n,n)::b Ϯ Integer::I,j,sum Do i=1,n Do j=1,n If(i+j .eq. n+1) sum=sum+b(I,j) Enddo ; enddo End subroutine sum_upper (b,sumu) Implicit none integer,parameter::n=3 Integer,dimension (n,n)::b Integer::I,j,sumu Do i=1,n Do j=1,n If (i+j .lt. n+1) sumu=sumu+b(I,j) Enddo ; enddo End subroutine sum_lower (b,suml) Implicit none integer,parameter::n=3 Integer,dimension (n,n)::b Integer::I,j,suml Do i=1,n Do j=1,n If (i+j .gt. n+1) suml=suml+b(I,j) Enddo ; enddo End ϯ EXAMPLE 6 Write a program to rotate matrix a(/4,4/) about minor diagonal, use format statement to print your output result. Program minor Implicit none Integer, parameter:: n=4 Integer, dimension (n,n):: a,z Integer::I,j Read(*,*) ((a(I,j),j=1,n),i=1,n) Do i=1,n Do j=1,n z(i,j)=a(n+1-j,n+1-i) Enddo ; enddo Write(*,7)((z(I,j),j=1,n),i=1,n) 7 format( 4(2x,i3)) End ϰ