Advertisement
Guest User

Untitled

a guest
Feb 14th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. PROGRAM TRIANGLES
  2.       IMPLICIT NONE
  3.       REAL*4 A, B, ALPHA, MINIMALANGLE
  4.       INTEGER ACTION
  5.       COMMON /TR/A, B, ALPHA
  6.       CALL MENU
  7.       CONTAINS
  8.        LOGICAL *1 FUNCTION TRCON()
  9.         TRCON = A.GT.0 .AND. B.GT.0 .AND. ALPHA.GT.0 .AND. ALPHA.LT.180
  10.        END
  11.        SUBROUTINE MENU
  12.         WRITE (*, *) ""
  13.         WRITE (*,*) "--- MENU ---"
  14.         WRITE (*,*) "1. INPUT TRIANGLE"
  15.         WRITE (*,*) "2. FIND SPACE"
  16.         WRITE (*,*) "3. FIND MINIMAL ANGLE"
  17.         WRITE (*,*) "4. FIND COS(MINIMAL ANGLE)"
  18.         WRITE (*,*) "5. EXIT"
  19.         WRITE (*, *) ""
  20.         READ (*, *) ACTION
  21.         IF (ACTION.EQ.1) CALL MENU1
  22.         IF (ACTION.EQ.2) CALL MENU2
  23.         IF (ACTION.EQ.3) CALL MENU3
  24.         IF (ACTION.EQ.4) CALL MENU4
  25.         IF (ACTION.EQ.5) CALL MENU5
  26.         IF (ACTION.LT.1 .OR. ACTION.GT.5) THEN
  27.          WRITE (*, *) "WRONG COMMAND"
  28.          CALL EXIT(-1)
  29.         END IF
  30.        END
  31.        SUBROUTINE MENU1
  32.         ! DATA INPUT
  33.         WRITE (*,*) 'TYPE EDGES A, B AND ANGLE ALPHA:'
  34.         READ (*,*) A, B, ALPHA
  35.         IF (.NOT.TRCON()) THEN
  36.          WRITE (*,*) 'ERROR: PROVIDED DATA IS NOT TRIANGLE'
  37.          A = 0
  38.          B = 0
  39.          ALPHA = 180
  40.         END IF
  41.         CALL MENU
  42.        END
  43.        SUBROUTINE MENU2
  44.         ! SPACE CALCULATION
  45.         REAL*4 S
  46.         IF (TRCON()) THEN
  47.          S = 0.5 * A * B * SIND(ALPHA)
  48.          WRITE (*,*) 'S  =', S
  49.         ELSE
  50.          WRITE (*, *) "INPUT VALID TRIANGLE (1) FIRST"
  51.         END IF
  52.         CALL MENU
  53.        END
  54.        SUBROUTINE MENU3
  55.         ! MINIMAL ANGLE SEARCH (IN DEGREES)
  56.         REAL*4 GAMMA, BETA, C
  57.         IF (TRCON()) THEN
  58.          C = SQRT(A**2 + B**2 - 2*A*B*COSD(ALPHA))
  59.          WRITE (*, *) "--- ANGLES ---"
  60.          WRITE (*, *) ALPHA
  61.          BETA = ACOSD((B**2 + C**2 - A**2) / (2 * B * C))
  62.          WRITE (*,*) BETA
  63.          GAMMA = ACOSD((C**2 + A**2 - B**2) / (2 * C * A))
  64.          WRITE (*,*) GAMMA
  65.          MINIMALANGLE = ALPHA
  66.          IF (BETA.LT.MINIMALANGLE) MINIMALANGLE = BETA
  67.          IF (GAMMA.LT.MINIMALANGLE) MINIMALANGLE = GAMMA
  68.          WRITE (*,*) "MINIMAL ANGLE EQUALS", MINIMALANGLE
  69.         ELSE
  70.          WRITE (*, *) "INPUT VALID TRIANGLE (1) FIRST"
  71.         END IF
  72.          CALL MENU
  73.        END
  74.        SUBROUTINE MENU4
  75.         ! COS(MINIMAL ANGLE) CALCULATION
  76.         REAL*4 RESULT
  77.         IF (TRCON()) THEN
  78.          RESULT = COSD(MINIMALANGLE)
  79.          WRITE (*,*) "COS(MINIMAL ANGLE) =", RESULT
  80.         ELSE
  81.          WRITE (*, *) "INPUT VALID TRIANGLE (1) FIRST"
  82.         END IF
  83.         CALL MENU
  84.        END
  85.        SUBROUTINE MENU5
  86.         ! PROGRAM EXIT
  87.         CALL EXIT(0)
  88.        END
  89.       END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement