Académique Documents
Professionnel Documents
Culture Documents
Leap Year
PROGRAM LEAP
IMPLICIT NONE
INTEGER::A,B,C,D
PRINT*,"ENTER YEAR"
READ*,A
B=MOD(A,400)
C=MOD(A,4)
D=MOD(A,100)
IF(D==0)THEN
ELSEIF(B==0)THEN
PRINT*,"LEAP YEAR"
ELSE
ENDIF
1
2. Greatest of three integer
PROGRAM GREATEST_OF_3_NUMBERS
IMPLICIT NONE
INTEGER::A,B,C
PRINT*,"ENTER A"
READ*,A
PRINT*,"ENTER B"
READ*,B
PRINT*,"ENTER C"
READ*,C
IF(A>B)THEN
ELSEIF(A>C)THEN
PRINT*,"A IS GREATEST"
ELSEIF(C>A)THEN
PRINT*,"C IS GREATEST"
ELSEIF(B>C)THEN
PRINT*,"B IS GREATEST"
ELSE
PRINT*,"C IS GREATEST"
ENDIF
ENDPROGRAM GREATEST_OF_3_NUMBERS
2
3. Student grade (Using IF-Else)
PROGRAM STUDENT_GRADE
IMPLICIT NONE
INTEGER::X,Y
READ*,X
READ*,Y
IF(X>=70)THEN
PRINT*,"A GRADE"
ELSEIF(60<=X)THEN
PRINT*,"B GRADE"
ELSEIF(50<=X)THEN
PRINT*,"C GRADE"
ELSEIF(40<=X)THEN
PRINT*,"D GRADE"
ELSE
PRINT*,"FAIL"
ENDIF
PRINT*,"ROLL NO=",Y,"MARKS=",X
ENDPROGRAM STUDENT_GRADE
3
4. Sum of number
PROGRAM sum_of_number
IMPLICIT NONE
INTEGER::digit,number,n,sum
sum=0
PRINT*,"TYPE AN INTEGER"
READ*,number
print*,"NUMBER= ",number
n=number
DO
IF(n==0)EXIT
digit=MOD(n,10)
sum=sum+digit
n=n/10
END DO
PRINT*,"NUMBER=",number,"SUM=",sum
4
5. Reverse of number
PROGRAM FUNCTION
IMPLICIT NONE
INTEGER::digit,number,n
n=0
PRINT*,"Type a number"
READ*,number
Print*,"Number=",number
DO
IF(number==0)EXIT
n=n*10
digit=MOD(number,10)
n=n+digit
number=number/10
ENDDO
PRINT*,"Number=",number,"Reverse=",n
ENDPROGRAM FUNCTION
5
6. Polynomial
PROGRAM POLY
IMPLICIT NONE
INTEGER::i,n
REAL::x,polynomial
REAL,DIMENSION(0:20)::a
READ*,n,x
READ*,(a(i),i=0,n)
polynomial=a(n)
DO i=n,1,-1
polynomial=a(i-1)+x*polynomial
END DO
PRINT*,"x=",x,"polynomial= ",polynomial
6
7. Addition and subtraction of matrix
PROGRAM MATRIX
IMPLICIT NONE
INTEGER,DIMENSION(100,100)::MATA,MATB,MATC,MATD
INTEGER::I,J,X,Y
READ*,X,Y
READ*,((MATA(I,J),I=1,X),J=1,Y)
READ*,((MATB(I,J),I=1,X),J=1,Y)
DO J=1,Y
DO I=1,X
MATC(I,J)=MATA(I,J)+MATB(I,J)
MATD(I,J)=MATA(I,J)-MATB(I,J)
END DO
END DO
PRINT*,"ADDITION=",((MATC(I,J),I=1,X),J=1,Y)
PRINT*,"SUBTRACTION=",((MATD(I,J),I=1,X),J=1,Y)
7
8. Transpose of matrix
PROGRAM TRANSPOSE_OF_MATRIX
IMPLICIT NONE
INTEGER,DIMENSION(100,100)::matrix,matrix1
INTEGER::i,j,x,y
READ*,x,y
READ*,((matrix(i,j),i=1,x),j=1,y)
DO j=1,y
DO i=1,x
matrix1(i,j)=matrix(j,i)
END DO
END DO
PRINT*,((matrix1(i,j),i=1,x),j=1,y)
8
9. Student grade (by loop)
PROGRAM student_grade
IMPLICIT NONE
INTEGER,DIMENSION(3,5)::s
INTEGER::i,j,sum
sum=0
print*,"ENTER THE MARKS OF 5 STUDENT IN THREE SUBJECTS 1,2,3"
READ*,((s(i,j),i=1,3),j=1,5)
DO j=1,5
sum=0
DO i=1,3
IF(s(i,j)<35)THEN
PRINT*,"STUDENT NO = ",j,"FAILED IN THE SUBJECT= ",i
END IF
sum=sum+s(i,j)
END DO
IF(sum>=250)THEN
PRINT*,"student no = ",j,"has obtained A GRADE"
ELSE IF(sum>=200)THEN
PRINT*,"student no = ",j,"has obtained B GRADE"
ELSE IF(sum>=150)THEN
PRINT*,"student no = ",j,"has obtained C GRADE"
ELSE IF(sum>=100)THEN
PRINT*,"student no = ",j,"has obtained D GRADE"
ELSE IF(sum<100)THEN
PRINT*,"student no = ",j,"has FAILED"
END IF
END DO
END PROGRAM student_grade
9
10. Sub function program
REAL FUNCTION S(X)
IMPLICIT NONE
REAL,INTENT(IN)::X
IF(X<3.0)THEN
S=-3.0
ELSE IF(X>3.0)THEN
S=3.0
ELSE
S=X
END IF
END FUNCTION S
PROGRAM FUNCTION
IMPLICIT NONE
REAL::A,B,S,Z
PRINT*,"TYPE A &B"
READ*,A,B
Z=(S(A)+S(B))/S(A+B)
PRINT*,"VALUE= ",Z
10
11. Roots of equation ( By using subroutine)
program use_roots
Implicit none
integer::flag,serial
real::p,q,r,x_r1,x_r2,x_im1,x_im2
serial=0
do
serial=serial+1
if(serial==2)EXIT
read*,p,q,r
call roots(p,q,r,x_r1,x_r2,x_im1,x_im2,flag)
select case(flag)
case(1)
print*,"Linear equation only one root"
print*,"root=",x_r1
case(2)
print*,"two real roots"
print*,"root=",x_r1,"root2=",x_r2
case(3)
print*,"complex conjugate roots"
print*,"root1=",x_r1,"+i",x_im1
print*,"root2=",x_r2,"+i",x_im2
end select
end do
end program use_roots
subroutine roots(a,b,c,x_real1,x_real2,x_img1,x_img2,i)
implicit none
real::diser,d !loacal variables
11
real,intent(in)::a,b,c
real,intent(out)::x_real1,x_real2,x_img1,x_img2
integer,intent(out)::i
real,parameter::epsilon=0.5E-6
if(ABS(a)<=epsilon) then
x_real1=-c/b;x_real2=0
x_img1=0;x_img2=0
i=1
return
end if
diser=b*b-4*a*c
if(diser>0) then
d=sqrt(diser);i=2
x_real1=-0.5*(-b+d)/a
x_real2=0.5*(-b-d)/a
x_img1=0;x_img2=0
else
d=sqrt(-diser);i=3
x_real1=-0.5*b/a;x_real2=x_real1;
x_img1=0.5*d/a;x_img2=-x_img1;
end if
12