!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