Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PROGRAM TRIANG
- COMMON/TRIANGLE/A,ANGLEA,ANGLEB
- COMMON/CALCULATION/ANGLEC,MINANGLE
- COMMON/FORCHECK/FLAG
- CALL FUNCTION
- END
- SUBROUTINE FUNCTION
- INTEGER NUMBER
- PRINT*, 'PLEASE, USE THE INSTRUCTIONS:'
- PRINT*, 'TYPE "1" FOR CREATING A NEW TRIANGLE'
- PRINT*, 'TYPE "2" FOR CALCULATION OF THE AREA OF THE TRIANGLE'
- PRINT*, 'TYPE "3" FOR CALCULATION OF THE MIN ANGLE'
- PRINT*, 'TYPE "4" FOR CALCULATION OF THE COSINUS OF THE MIN ANGLE'
- PRINT*, 'TYPE "5" FOR EXIT'
- READ*, NUMBER
- IF(NUMBER.EQ.1) CALL CREATE
- IF(NUMBER.EQ.2) CALL AREATRIANGLE
- IF(NUMBER.EQ.3) CALL MIN
- IF(NUMBER.EQ.4) CALL COSMIN
- IF(NUMBER.EQ.5) RETURN
- CALL FUNCTION
- END
- SUBROUTINE CREATE
- COMMON/TRIANGLE/A,ANGLEA,ANGLEB
- COMMON/FORCHECK/FLAG
- PRINT*, 'TYPE THE SIDE OF THE TRIANGLE'
- READ*,A
- PRINT*, 'TYPE THE NEIGHBOR ANGLE'
- READ*,ANGLEA
- PRINT*, 'TYPE THE OPPOSITE ANGLE'
- READ*,ANGLEB
- CALL FINDERR
- IF(FLAG.EQ.1)THEN
- RETURN
- ELSE
- PRINT*,'YOU TYPED ',A,ANGLEA,ANGLEB
- ENDIF
- END
- SUBROUTINE AREATRIANGLE
- COMMON/TRIANGLE/A,ANGLEA,ANGLEB
- COMMON/CALCULATION/ANGLEC,MINANGLE
- COMMON/FORCHECK/FLAG
- REAL*4 SQ
- IF(FLAG.EQ.1)RETURN
- CALL CALCULMIN
- SQ=A**2/2*SIN(ANGLEA)*SIN(ANGLEB)/SIN(ANGLEC)
- SQ=ABS(SQ)
- PRINT*,'THE AREA OF THE TRIANGLE IS ',SQ
- END
- SUBROUTINE MIN
- COMMON/CALCULATION/ANGLEC,MINANGLE
- COMMON/FORCHECK/FLAG
- IF(FLAG.EQ.1)RETURN
- CALL CALCULMIN
- PRINT*,'THE MIN ANGLE IS ',MINANGLE
- END
- SUBROUTINE CALCULMIN
- COMMON/TRIANGLE/A,ANGLEA,ANGLEB
- COMMON/CALCULATION/ANGLEC,MINANGLE
- ANGLEC=180-ANGLEA-ANGLEB
- IF(ANGLEA.LE.ANGLEB)THEN
- MINANGLE=ANGLEA
- ELSE
- MINANGLE=ANGLEB
- ENDIF
- IF(ANGLEC.LE.MINANGLE)THEN
- MINANGLE=ANGLEC
- ENDIF
- END
- SUBROUTINE COSMIN
- COMMON/CALCULATION/ANGLEC,MINANGLE
- COMMON/FORCHECK/FLAG
- REAL*4 COSMINANG
- IF(FLAG.EQ.1)RETURN
- CALL CALCULMIN
- COSMINANG=MINANGLE
- PRINT*, 'THE COSINUS OF THE MIN ANGLE IS ',COS(COSMINANG)
- RETURN
- END
- SUBROUTINE FINDERR
- COMMON/FORCHECK/FLAG
- CALL CHECK
- IF(FLAG.EQ.1)CALL ERROR
- RETURN
- END
- SUBROUTINE CHECK
- COMMON/TRIANGLE/A,ANGLEA,ANGLEB
- COMMON/FORCHECK/FLAG
- IF(ANGLEA.LE.0.OR.ANGLEA.GE.180)THEN
- FLAG=1
- RETURN
- ENDIF
- IF(ANGLEB.LE.0.OR.ANGLEB.GE.180)THEN
- FLAG=1
- RETURN
- ENDIF
- IF(ANGLEA+ANGLEB.GE.180)THEN
- FLAG=1
- RETURN
- ENDIF
- IF(A.LE.0)THEN
- FLAG=1
- RETURN
- ENDIF
- FLAG=0
- RETURN
- END
- SUBROUTINE ERROR
- PRINT*, 'WRONG DATA, PLEASE, CHECK THE STATES'
- RETURN
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement