fortran guide

Upload: ahmed-siddique

Post on 08-Mar-2016

4 views

Category:

Documents


0 download

DESCRIPTION

basic guide to to basics of fortran 77

TRANSCRIPT

CF 1 LAB ASSIGNEMENT 6Task 1:Write a program to determine whether a number taken as input from user is a leap year or not?Codes for program: PROGRAM LEAP YEAR ! DECLARATION STATEMENT ! ====================================== IMPLICIT NONE INTEGER A, X CHARACTER D PRINT*,'' PRINT*,' ----------- LAB 6 TASK 1------------' PRINT*,'' PRINT*,' LEAP YEAR' ! INPUT ! ======================================= PRINT*,''10 PRINT*,' ENTER THE YEAR:' READ*, A ! CALCULATIONS AND RESULTS ! ======================================= X = MOD( A, 400) IF (X. EQ. 0) THEN PRINT*, A, ' IS A LEAP YEAR' ELSE IF (MOD( A, 100). EQ. 0) THEN PRINT*,A,' IS NOT A LEAP YEAR' ELSE IF (MOD( A, 4). EQ. 0) THEN PRINT*, A,' IS A LEAP YEAR' ELSE PRINT*, A,' IS NOT A LEAP YEAR' END IF PRINT*,' DO YOU WANT TO TO CONTINUE (Y/N)?' READ*,D IF (D. EQ. 'Y') GO TO 10 END PROGRAM LEAP YEARResults:

Task 2:Write a FORTRAN program that takes distance as input from the user and prints the cost of travellingCodes for program: PROGRAM FAIR CALCULATION ! DECLARATION STATEMENT ! ====================================== IMPLICIT NONE REAL A, X, Y, FAIR CHARACTER D PRINT*,'' PRINT*,' ----------- LAB 6 TASK 2------------' PRINT*,'' PRINT*,' FAIR CALCULATION' ! INPUT ! ======================================= PRINT*,''10 PRINT*,' ENTER THE DISTANCE TRAVELLED:' READ*, A ! CALCULATIONS AND RESULTS ! ======================================= IF (A. LE. 100.0) THEN PRINT*,'PER UNIT CHARGES ARE 5.0 RUPEES' PRINT*,' FAIR FOR ',A,' IS ',5.0*A X = A ELSE IF (A. LE. 500.0) THEN PRINT*,'PER UNIT CHARGES ARE 5.0 RUPEES FOR INITIAL 100 UNITS' PRINT*,'PER UNIT CHARGES ARE 8.0 FOR THE REMAINING DISTANCE' PRINT*,' FAIR FOR ',A,' IS',(100.0*5.0)+((A-100.0)*8.0) Y = A ELSE IF (A. LT. 1000.0) THEN PRINT*,'PER UNIT CHARGES ARE 5.0 RUPEES FOR INITIAL 100 UNITS' PRINT*,'PER UNIT CHARGES ARE 8.0 FOR 101-500 UNITS' PRINT*,'PER UNIT CHARGES ARE 10.0 FOR REMAIING DISTANCE' FAIR = ((A - 500.0)*10.0)+(400.0*8.0)+(100.0*5.0) PRINT*,'FAIR FOR ',A,' UNITS IS ',FAIR ELSE PRINT*,'PER UNIT CHARGES ARE 5.0 RUPEES FOR INITIAL 100 UNITS' PRINT*,'PER UNIT CHARGES ARE 8.0 FOR 101-500 UNITS' PRINT*,'PER UNIT CHARGES ARE 10.0 FOR 501-999 UNITS' PRINT*,'PER UNIT CHARGES ARE 12.0 FOR =>1000' FAIR = ((A - 999.0)*12.0)+(499*10.0)+(400.0*8.0)+(100.0*5.0) PRINT*,'FAIR FOR ',A,' UNITS IS ',FAIR END IF PRINT*,' DO YOU WANT TO TO CONTINUE (Y/N)?' READ*,D IF (D. EQ. 'Y') GO TO 10 END PROGRAM FAIR CALCULATIONResult:

Task 3:Ahmad has to write a program where-in user enters a number and program generates a list of 100 odd numbers starting from the entered number.Codes for program: PROGRAM ODD NUMBERS ! DECLARATION STATEMENT ! ====================================== IMPLICIT NONE INTEGER A, X, I, N CHARACTER D PRINT*,'' PRINT*,' ----------- LAB 6 TASK 3------------' PRINT*,'' PRINT*,' 100 ODD NUMBERS' ! INPUT ! ======================================= PRINT*,''10 PRINT*,' ENTER THE NUMBER FROM WHICH YOU WANT TO START' READ*, A ! CALCULATIONS, LOGIC AND RESULTS ! ======================================= PRINT*,'ODD NUMBERS STARTING FROM', A,' ARE' X = MOD (A, 2) IF (X. EQ. 0) THEN N = A - 1 DO I = 1, 100 N = N + 2 PRINT'($,I5)',N END DO ELSE N = A - 2 DO I = 1, 100 N = N + 2 PRINT'($,I5)',N END DO END IF PRINT'(1X,/,A)','DO YOU WANT TO CONTINUE (Y / N)' READ*,D IF (D. EQ. 'Y') GO TO 10 END PROGRAM ODD NUMBERSResult:

Task 4:Write a FORTRAN program that takes three sides of a triangle as input and determines whether the triangle is equilateral, isosceles or scalene.Codes for program: PROGRAM TYPE OF TRIANGLE ! DECLARATION STATEMENT ! ====================================== IMPLICIT NONE REAL A, B, C, X, Y, Z, E CHARACTER D PRINT*,'' PRINT*,' ----------- LAB 6 TASK 4------------' PRINT*,'' PRINT*,' TYPE OF TRIANGLE' ! INPUT ! ======================================= PRINT*,''10 PRINT*,' ENTER THE LENGTHS OF SIDES OF TRIANGLE' READ*, A, B, C ! CALCULATIONS, LOGIC AND RESULTS ! ======================================= PRINT*,'' IF (A. EQ. B) THEN X = A ELSE X = 0.0 END IF IF (X. EQ. C) THEN PRINT*,' TRIANGLE IS EQUILATERAL' ELSE IF (A. EQ. B) THEN PRINT*,' TRIANGLE IS ISOSCELES' ELSE IF (A. EQ. C) THEN PRINT*,' TRIANGLE IS ISOSCELES' ELSE IF (B. EQ. C) THEN PRINT*,' TRIANGLE IS ISOSCELES' ELSE PRINT*,' TRIANGLE IS SCALENE' END IF PRINT*,' DO YOU WANT TO TO CONTINUE (Y/N)?' READ*,D IF (D. EQ. 'Y') GO TO 10 END PROGRAM TYPE OF TRIANGLEResult:

Task 5:Write a FORTRAN program to add first 10 terms of the following sequence using DO loop.

Codes for program: PROGRAM AP ! DECLARATION STATEMENT ! ====================================== IMPLICIT NONE REAL SUM, N, TERM, FACTORIAL PRINT*,'' PRINT*,' ----------- LAB 6 TASK 5------------' PRINT*,'' PRINT*,' ADDITION OF THE GIVEN SEQUENCE' ! CALCULATIONS, LOGIC AND RESULTS ! ======================================= SUM = 0.0 DO N = 1, 10 FACTORIAL = 1 DO TERM = N, 1, -1 FACTORIAL = FACTORIAL * TERM END DO TERM = 1.0/FACTORIAL SUM = SUM + TERM END DO PRINT*,'' PRINT'(A,F8.3)',' THE SUM OF FIRST 10 TERMS = ',SUM END PROGRAM APResult:

Task 6:Write a FORTRAN program to take a number as input from user and calculate the value of sine of that number using 5 terms of following series:

Codes for program: PROGRAM SINX CALCULATION ! DECLARATION STATEMENT ! ====================================== IMPLICIT NONE REAL SUM, N, TERM, FACTORIAL, X, A INTEGER I ! 'X' AND 'A' DENOTES ANGLE IN DEGREES AND RADIAN RESPECTIVELY CHARACTER D PRINT*,'' PRINT*,' ----------- LAB 6 TASK 6------------' PRINT*,'' PRINT*,' SIN CALCULATION FROM GIVEN SERIES' PRINT*,'' ! INPUT ! ======================================= 10 PRINT*,'ENTER THE ANGLE IN DEGREES:' READ*, X A = X * 3.14159 / 180.0 ! CALCULATIONS, LOGIC AND RESULTS ! ======================================= SUM = 0.0 I = 0 DO N = 1.0, 10.0, 2.0 FACTORIAL = 1.0 DO TERM = N, 1.0, -1.0 FACTORIAL = FACTORIAL * TERM END DO I = I + 1 TERM = (A**N)/FACTORIAL IF (MOD(I, 2). EQ. 1) THEN SUM = SUM + TERM ELSE SUM = SUM - TERM END IF END DO PRINT*,'' PRINT'(A,F4.1,A,F5.2)',' THE SIN OF ',X,' DEGREES = ',SUM PRINT*,' DO YOU WANT TO CONTINUE ( Y / N )' READ*,D IF (D. EQ. 'Y') GO TO 10 END PROGRAM SINX CALCULATIONResult:

Task 7:Write a program to print all the leap years starting from year X to year Y (X < Y). Use DO loop.Codes for program: PROGRAM LEAP YEAR ! DECLARATION STATEMENT ! ====================================== IMPLICIT NONE INTEGER A, B, X, N CHARACTER D PRINT*,'' PRINT*,' ----------- LAB 6 TASK 7------------' PRINT*,'' PRINT*,' LEAP YEAR' ! INPUT ! ======================================= PRINT*,''10 PRINT*,' ENTER THE STARTING YEAR:' READ*, A PRINT*,' ENTER THE ENDING YEAR:' READ*,B ! CALCULATIONS AND RESULTS ! ======================================= PRINT*,'LEAP YEARS FROM',A,' TO ',B,' ARE' IF (MOD( A, 4). EQ. 0) THEN DO N = A, B, 4 PRINT*,N END DO ELSE IF (MOD(A, 4). EQ. 1) THEN DO N = A + 3, B, 4 PRINT*, N END DO ELSE IF (MOD(A, 4). EQ. 2) THEN DO N = A + 2, B, 4 PRINT*, N END DO ELSE DO N = A + 1, B, 4 PRINT*, N END DO END IF PRINT*,' DO YOU WANT TO TO CONTINUE (Y/N)?' READ*,D IF (D. EQ. 'Y') GO TO 10 END PROGRAM LEAP YEARResult:

Task 8:Write a program to print positive divisors of a number (taken as input from user). Use DO loop.Codes for program: PROGRAM POSITIVE DIVISOR ! DECLARATION STATEMENT ! ====================================== IMPLICIT NONE INTEGER A, N CHARACTER D PRINT*,'' PRINT*,' ----------- LAB 6 TASK 8------------' PRINT*,'' PRINT*,' POSITIVE DIVISOR OF GIVEN NUMBER' PRINT*,'' ! INPUT ! ======================================= 10 PRINT*,'ENTER THE NUMBER' READ*, A ! CALCULATIONS, LOGIC AND RESULTS ! ======================================= PRINT*,'' PRINT*,' POSITIVE DIVISOR OF ',A,' ARE' DO N = 1, A IF ( MOD(A, N). EQ. 0) THEN PRINT(I8,$),N END IF END DO PRINT(A,/),' DO YOU WANT TO CONTINUE ( Y / N )' READ*,D IF (D. EQ. 'Y') GO TO 10 END PROGRAM POSITIVE DIVISORResult:

Task 9:Write a program that prints positive divisors of each number between A and B, where A and B are provided by users (A < B).Codes for program: PROGRAM POSITIVE DIVISOR WITHIN A RANGE ! DECLARATION STATEMENT ! ====================================== IMPLICIT NONE INTEGER A, B, N, I CHARACTER D PRINT*,'' PRINT*,' ----------- LAB 6 TASK 9------------' PRINT*,'' PRINT*,' POSITIVE DIVISOR OF GIVEN NUMBER' PRINT*,'' ! INPUT ! ======================================= 10 PRINT*,'ENTER MINIMUM VALUE' READ*, A PRINT*,'ENTER MAXIMUM VALUE' READ*,B ! CALCULATIONS, LOGIC AND RESULTS ! ======================================= PRINT*,'' DO N = A+1, B-1 PRINT(/,A,I3,A),' POSITIVE DIVISOR OF ',N,' ARE' DO I = 1, N IF ( MOD(N, I). EQ. 0) THEN PRINT(I4,$),I END IF END DO END DO PRINT(/,A),' DO YOU WANT TO CONTINUE ( Y / N )' READ*,D IF (D. EQ. 'Y') GO TO 10 END PROGRAM POSITIVE DIVISOR WITHIN A RANGEResult:

Task 10: PROGRAM FIBONACCI SEQUENCE ! DECLARATION STATEMENT ! ====================================== IMPLICIT NONE INTEGER A, A1, A2, N, I CHARACTER D PRINT*,'' PRINT*,' ----------- LAB 6 TASK 10------------' PRINT*,'' PRINT*,' FIBONACCI SEQUENCE' PRINT*,'' ! INPUT ! ======================================= 10 PRINT*,'ENTER THE DESIRED NUMBER OF TERMS' READ*, I ! INITILIZATION OF VARIABLES ! ======================================= N = I - 2 A1 = 0 A2 = 1 ! CALCULATIONS, LOGIC AND RESULTS ! ======================================= PRINT*,I,' TERMS OF FIBONACCI SEQUENCE ARE' PRINT(I4,$),A1 PRINT*,A2 DO N = 1, N A = A1 + A2 PRINT(I4,$),A A1 = A2 A2 = A END DO PRINT(/,A),' DO YOU WANT TO CONTINUE ( Y / N )' READ*,D IF (D. EQ. 'Y') GO TO 10 END PROGRAM FIBONACCI SEQUENCEResult: