Advertisement
Wolfed_7

Untitled

Feb 14th, 2022
1,508
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. !23456    
  2. C     PROBLEM LIST:
  3. C     1) ДОБАВИТЬ PI КАК ПАРАМЕТЕР, НО  ПРЕНЕБРЕЧЬ ЯВНЫМ ОБЪЯВЛЕНИЕМ
  4. C     2) ИСПОЛЬЗОВАТЬ ФУНКЦИЮ ВМЕСТО SUBROUTINE ПРИ ВЫЧИСЛЕНИИ
  5. C     НАИМЕНЬШЕГО УГЛА И ВЫЗЫВАТЬ ЕЕ ПРИ ПОИСКЕ НАИМЕНЬШЕГО КОСИНУСА
  6.  
  7.       PROGRAM MAIN
  8. C      PARAMETER PI = 3.14159265
  9.       COMMON /PUBLIC/ A, B, ALPH
  10.       COMMON /PUBLIC1/ GAMMA, BETA
  11.       CALL MENU
  12.     1 READ *, ICOMMAND
  13.       SELECT CASE (ICOMMAND)
  14.       CASE (1)
  15.        CALL ENTERNEWTRAINGLE
  16.       CASE (2)
  17.        CALL CALCULATEAREA
  18.       CASE (3)
  19.        CALL FINDSMALLESTANG
  20.        PRINT *, MINANGLE(A,B,ALPH)
  21.       CASE (4)
  22.        CALL FINDSMALLESTCOS
  23.       CASE (5)
  24.        GO TO 2
  25.       CASE (6)
  26.        CALL WRILETRAINGLE
  27.       CASE DEFAULT
  28.        PRINT *, 'UNEXPECTED COMMAND'
  29.       END SELECT
  30.       GO TO 1
  31.     2 END
  32.          
  33.       SUBROUTINE MENU
  34.       PRINT *, '1) ENTER TRAINGLE'
  35.       PRINT *, '2) CALCULATING THE AREA OF A TRAINGLE'
  36.       PRINT *, '3) CALCULATION OF THE SMALLEST ANGLE IN DEGREES'
  37.       PRINT *, '4) CALCULATION OF THE COSINE OF THE MINIMUM ANGLE'
  38.       PRINT *, '5) END OF WORK'
  39.       PRINT *, '6!) WRITE TRAINGLE'
  40.       END
  41.      
  42. CCCC  TO DELETE
  43.       SUBROUTINE WRILETRAINGLE
  44.       COMMON /PUBLIC/ A, B, ALPH
  45.       PRINT 5,A,B,ALPH
  46.     5 FORMAT ('NOW TRAINGLE HAS FOLLOWING VALUES: A=', F3.0,
  47.      1 ' B=',F3.0,' ALPH=', F11.8)
  48.       END
  49. CCCC  TO DELETE
  50.      
  51.       SUBROUTINE ENTERNEWTRAINGLE
  52.       COMMON /PUBLIC/ A, B, ALPH
  53.    14 PRINT *, 'ENTER FOLLOWING DATA:'
  54.       PRINT *, 'A='
  55.       READ *, A
  56.       PRINT *, 'B='
  57.       READ *, B
  58.       PRINT *, 'ALPH=(GRADUES)'
  59.       READ *, ALPH
  60.       ALPH = ALPH/180*3.14159265
  61.       IF(A**2.LE.(B*SIN(ALPH))**(2)) THEN
  62.        PRINT *, 'A TRAINGLE WITH THE GIVEN PARAMETERS DOES NOT EXIST!'
  63.        GO TO 14
  64.       ENDIF
  65.       END
  66.      
  67.       SUBROUTINE CALCULATEAREA
  68.       COMMON /PUBLIC/ A, B, ALPH
  69.       COMMON /PUBLIC1/ GAMMA, BETA
  70.       GAMMA = 3.14159265 - ALPH - ASIN(B*SIN(ALPH)/A)
  71.       PRINT 8,0.5*A*B*SIN(GAMMA)
  72.     8 FORMAT('TRAINGLE HAS AREA: ',F7.4)
  73.       END
  74.      
  75.       SUBROUTINE FINDSMALLESTANG
  76.       COMMON /PUBLIC/ A, B, ALPH
  77.       COMMON /PUBLIC1/ GAMMA, BETA
  78.       BETA = ASIN(B*SIN(ALPH)/A)
  79.       GAMMA = 3.14159265 - ALPH - ASIN(B*SIN(ALPH)/A)
  80.       IF(ALPH.LT.BETA.AND.ALPH.LT.GAMMA) THEN
  81.        PRINT 9, ALPH*180/3.14159256
  82.     9  FORMAT('SMALLEST ANGLE HAS VALUE: ', F7.4)
  83.       ELSE IF(BETA.LT.ALPHA.AND.BETA.LT.GAMMA) THEN
  84.        PRINT 7, BETA*180/3.14159256
  85.     7  FORMAT('SMALLEST ANGLE HAS VALUE: ', F7.4)
  86.       ELSE IF(GAMMA.LT.BETA.AND.GAMMA.LT.BETA) THEN
  87.        PRINT 6, GAMMA*180/3.14159256
  88.     6  FORMAT('SMALLEST ANGLE HAS VALUE: ', F7.4)
  89.       ELSE
  90.        PRINT *, 'UNEXPECTED PROBLEM!'
  91.       END IF
  92.       END
  93.  
  94. C     TRY TO USE IT
  95.       DOUBLEPRECISION FUNCTION MINANGLE(A,B,ALPH)
  96.       !COMMON /PUBLIC/ A, B, ALPH
  97.       C = B*COS(ALPH)+SQRT(A**2-(B*SIN(ALPH))**2)
  98.       IF(A.LT.B.AND.A.LT.C) THEN
  99.        MINANGLE = ALPH
  100.        RETURN
  101.       ELSE IF(B.LT.A.AND.B.LT.C) THEN
  102.        MINANGLE = ASIN(B*SIN(ALPH)/A)
  103.        RETURN
  104.       ELSE IF(C.LT.A.AND.C.LT.B) THEN
  105.        MINANGLE = ASIN(C*SIN(ALPH)/A)
  106.        RETURN
  107.       ELSE
  108.        MINANGLE = 0
  109.        !PRINT *, 'UNEXPECTED PROBLEM!'
  110.        RETURN
  111.       END IF
  112.       !RETURN
  113.       END
  114.      
  115.       SUBROUTINE FINDSMALLESTCOS
  116.       COMMON /PUBLIC/ A, B, ALPH
  117.       C = B*COS(ALPH)+SQRT(A**2-(B*SIN(ALPH))**2)
  118.       IF(A.LT.B.AND.A.LT.C) THEN
  119.        PRINT 9, COS(ALPH)
  120.     9  FORMAT('SMALLEST COSINE HAS VALUE: ', F7.4)
  121.       ELSE IF(B.LT.A.AND.B.LT.C) THEN
  122.        PRINT 7, COS(ASIN(B*SIN(ALPH)/A))
  123.     7  FORMAT('SMALLEST COSINE HAS VALUE: ', F7.4)
  124.       ELSE IF(C.LT.A.AND.C.LT.B) THEN
  125.        PRINT 6, COS(ASIN(C*SIN(ALPH)/A))
  126.     6  FORMAT('SMALLEST COSINE HAS VALUE: ', F7.4)
  127.       ELSE
  128.        PRINT *, 'UNEXPECTED PROBLEM!'
  129.       END IF
  130.       END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement