Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PROGRAM TRIANGLES
- IMPLICIT NONE
- REAL*4 A, B, ALPHA, MINIMALANGLE
- INTEGER ACTION
- COMMON /TR/A, B, ALPHA
- CALL MENU
- CONTAINS
- LOGICAL *1 FUNCTION TRCON()
- TRCON = A.GT.0 .AND. B.GT.0 .AND. ALPHA.GT.0 .AND. ALPHA.LT.180
- END
- SUBROUTINE MENU
- WRITE (*, *) ""
- WRITE (*,*) "--- MENU ---"
- WRITE (*,*) "1. INPUT TRIANGLE"
- WRITE (*,*) "2. FIND SPACE"
- WRITE (*,*) "3. FIND MINIMAL ANGLE"
- WRITE (*,*) "4. FIND COS(MINIMAL ANGLE)"
- WRITE (*,*) "5. EXIT"
- WRITE (*, *) ""
- READ (*, *) ACTION
- IF (ACTION.EQ.1) CALL MENU1
- IF (ACTION.EQ.2) CALL MENU2
- IF (ACTION.EQ.3) CALL MENU3
- IF (ACTION.EQ.4) CALL MENU4
- IF (ACTION.EQ.5) CALL MENU5
- IF (ACTION.LT.1 .OR. ACTION.GT.5) THEN
- WRITE (*, *) "WRONG COMMAND"
- CALL EXIT(-1)
- END IF
- END
- SUBROUTINE MENU1
- ! DATA INPUT
- WRITE (*,*) 'TYPE EDGES A, B AND ANGLE ALPHA:'
- READ (*,*) A, B, ALPHA
- IF (.NOT.TRCON()) THEN
- WRITE (*,*) 'ERROR: PROVIDED DATA IS NOT TRIANGLE'
- A = 0
- B = 0
- ALPHA = 180
- END IF
- CALL MENU
- END
- SUBROUTINE MENU2
- ! SPACE CALCULATION
- REAL*4 S
- IF (TRCON()) THEN
- S = 0.5 * A * B * SIND(ALPHA)
- WRITE (*,*) 'S =', S
- ELSE
- WRITE (*, *) "INPUT VALID TRIANGLE (1) FIRST"
- END IF
- CALL MENU
- END
- SUBROUTINE MENU3
- ! MINIMAL ANGLE SEARCH (IN DEGREES)
- REAL*4 GAMMA, BETA, C
- IF (TRCON()) THEN
- C = SQRT(A**2 + B**2 - 2*A*B*COSD(ALPHA))
- WRITE (*, *) "--- ANGLES ---"
- WRITE (*, *) ALPHA
- BETA = ACOSD((B**2 + C**2 - A**2) / (2 * B * C))
- WRITE (*,*) BETA
- GAMMA = ACOSD((C**2 + A**2 - B**2) / (2 * C * A))
- WRITE (*,*) GAMMA
- MINIMALANGLE = ALPHA
- IF (BETA.LT.MINIMALANGLE) MINIMALANGLE = BETA
- IF (GAMMA.LT.MINIMALANGLE) MINIMALANGLE = GAMMA
- WRITE (*,*) "MINIMAL ANGLE EQUALS", MINIMALANGLE
- ELSE
- WRITE (*, *) "INPUT VALID TRIANGLE (1) FIRST"
- END IF
- CALL MENU
- END
- SUBROUTINE MENU4
- ! COS(MINIMAL ANGLE) CALCULATION
- REAL*4 RESULT
- IF (TRCON()) THEN
- RESULT = COSD(MINIMALANGLE)
- WRITE (*,*) "COS(MINIMAL ANGLE) =", RESULT
- ELSE
- WRITE (*, *) "INPUT VALID TRIANGLE (1) FIRST"
- END IF
- CALL MENU
- END
- SUBROUTINE MENU5
- ! PROGRAM EXIT
- CALL EXIT(0)
- END
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement