Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- !23456
- C PROBLEM LIST:
- C 1) ДОБАВИТЬ PI КАК ПАРАМЕТЕР, НО ПРЕНЕБРЕЧЬ ЯВНЫМ ОБЪЯВЛЕНИЕМ
- C 2) ИСПОЛЬЗОВАТЬ ФУНКЦИЮ ВМЕСТО SUBROUTINE ПРИ ВЫЧИСЛЕНИИ
- C НАИМЕНЬШЕГО УГЛА И ВЫЗЫВАТЬ ЕЕ ПРИ ПОИСКЕ НАИМЕНЬШЕГО КОСИНУСА
- PROGRAM MAIN
- C PARAMETER PI = 3.14159265
- COMMON /PUBLIC/ A, B, ALPH
- COMMON /PUBLIC1/ GAMMA, BETA
- CALL MENU
- 1 READ *, ICOMMAND
- SELECT CASE (ICOMMAND)
- CASE (1)
- CALL ENTERNEWTRAINGLE
- CASE (2)
- CALL CALCULATEAREA
- CASE (3)
- CALL FINDSMALLESTANG
- PRINT *, MINANGLE(A,B,ALPH)
- CASE (4)
- CALL FINDSMALLESTCOS
- CASE (5)
- GO TO 2
- CASE (6)
- CALL WRILETRAINGLE
- CASE DEFAULT
- PRINT *, 'UNEXPECTED COMMAND'
- END SELECT
- GO TO 1
- 2 END
- SUBROUTINE MENU
- PRINT *, '1) ENTER TRAINGLE'
- PRINT *, '2) CALCULATING THE AREA OF A TRAINGLE'
- PRINT *, '3) CALCULATION OF THE SMALLEST ANGLE IN DEGREES'
- PRINT *, '4) CALCULATION OF THE COSINE OF THE MINIMUM ANGLE'
- PRINT *, '5) END OF WORK'
- PRINT *, '6!) WRITE TRAINGLE'
- END
- CCCC TO DELETE
- SUBROUTINE WRILETRAINGLE
- COMMON /PUBLIC/ A, B, ALPH
- PRINT 5,A,B,ALPH
- 5 FORMAT ('NOW TRAINGLE HAS FOLLOWING VALUES: A=', F3.0,
- 1 ' B=',F3.0,' ALPH=', F11.8)
- END
- CCCC TO DELETE
- SUBROUTINE ENTERNEWTRAINGLE
- COMMON /PUBLIC/ A, B, ALPH
- 14 PRINT *, 'ENTER FOLLOWING DATA:'
- PRINT *, 'A='
- READ *, A
- PRINT *, 'B='
- READ *, B
- PRINT *, 'ALPH=(GRADUES)'
- READ *, ALPH
- ALPH = ALPH/180*3.14159265
- IF(A**2.LE.(B*SIN(ALPH))**(2)) THEN
- PRINT *, 'A TRAINGLE WITH THE GIVEN PARAMETERS DOES NOT EXIST!'
- GO TO 14
- ENDIF
- END
- SUBROUTINE CALCULATEAREA
- COMMON /PUBLIC/ A, B, ALPH
- COMMON /PUBLIC1/ GAMMA, BETA
- GAMMA = 3.14159265 - ALPH - ASIN(B*SIN(ALPH)/A)
- PRINT 8,0.5*A*B*SIN(GAMMA)
- 8 FORMAT('TRAINGLE HAS AREA: ',F7.4)
- END
- SUBROUTINE FINDSMALLESTANG
- COMMON /PUBLIC/ A, B, ALPH
- COMMON /PUBLIC1/ GAMMA, BETA
- BETA = ASIN(B*SIN(ALPH)/A)
- GAMMA = 3.14159265 - ALPH - ASIN(B*SIN(ALPH)/A)
- IF(ALPH.LT.BETA.AND.ALPH.LT.GAMMA) THEN
- PRINT 9, ALPH*180/3.14159256
- 9 FORMAT('SMALLEST ANGLE HAS VALUE: ', F7.4)
- ELSE IF(BETA.LT.ALPHA.AND.BETA.LT.GAMMA) THEN
- PRINT 7, BETA*180/3.14159256
- 7 FORMAT('SMALLEST ANGLE HAS VALUE: ', F7.4)
- ELSE IF(GAMMA.LT.BETA.AND.GAMMA.LT.BETA) THEN
- PRINT 6, GAMMA*180/3.14159256
- 6 FORMAT('SMALLEST ANGLE HAS VALUE: ', F7.4)
- ELSE
- PRINT *, 'UNEXPECTED PROBLEM!'
- END IF
- END
- C TRY TO USE IT
- DOUBLEPRECISION FUNCTION MINANGLE(A,B,ALPH)
- !COMMON /PUBLIC/ A, B, ALPH
- C = B*COS(ALPH)+SQRT(A**2-(B*SIN(ALPH))**2)
- IF(A.LT.B.AND.A.LT.C) THEN
- MINANGLE = ALPH
- RETURN
- ELSE IF(B.LT.A.AND.B.LT.C) THEN
- MINANGLE = ASIN(B*SIN(ALPH)/A)
- RETURN
- ELSE IF(C.LT.A.AND.C.LT.B) THEN
- MINANGLE = ASIN(C*SIN(ALPH)/A)
- RETURN
- ELSE
- MINANGLE = 0
- !PRINT *, 'UNEXPECTED PROBLEM!'
- RETURN
- END IF
- !RETURN
- END
- SUBROUTINE FINDSMALLESTCOS
- COMMON /PUBLIC/ A, B, ALPH
- C = B*COS(ALPH)+SQRT(A**2-(B*SIN(ALPH))**2)
- IF(A.LT.B.AND.A.LT.C) THEN
- PRINT 9, COS(ALPH)
- 9 FORMAT('SMALLEST COSINE HAS VALUE: ', F7.4)
- ELSE IF(B.LT.A.AND.B.LT.C) THEN
- PRINT 7, COS(ASIN(B*SIN(ALPH)/A))
- 7 FORMAT('SMALLEST COSINE HAS VALUE: ', F7.4)
- ELSE IF(C.LT.A.AND.C.LT.B) THEN
- PRINT 6, COS(ASIN(C*SIN(ALPH)/A))
- 6 FORMAT('SMALLEST COSINE HAS VALUE: ', F7.4)
- ELSE
- PRINT *, 'UNEXPECTED PROBLEM!'
- END IF
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement