Advertisement
Wolfed_7

Untitled

Feb 11th, 2022
1,550
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. c Main. Create by Sanya, Nikita and Vanya
  2.       program main
  3.       implicit none
  4.       real side, angle1, angle2, angle3, pi
  5.       common / input / side, angle1, angle2
  6.       common / garbage / angle3, pi
  7.  
  8.       pi = 3.141592652
  9.       call console()
  10.  
  11.       stop
  12.       end
  13.  
  14. c Console handling
  15.       subroutine console()
  16.       implicit none
  17.       integer command
  18.       logical is_interrupted, is_created, triangle_setup
  19.       real area, min_angle, min_angle_cos
  20.       real side, angle1, angle2, angle3, pi
  21.       common / input / side, angle1, angle2
  22.       common / garbage / angle3, pi
  23.  
  24.       is_interrupted = .FALSE.
  25.       is_created = .FALSE.
  26.  
  27.  10   if (is_interrupted .EQV. .FALSE.) then
  28.           print *, 'Write command: '
  29.           read *, command
  30.  
  31.           if (command .EQ. 1) then
  32.               print *,
  33.      +            'Input triangle parameters [side, angle1, angle2]: '
  34.               read *, side, angle1, angle2
  35.               if (triangle_setup()) then
  36.                   is_created = .TRUE.
  37.                   print *, 'Triangle successfully created'
  38.               else
  39.                   is_created = .FALSE.
  40.                   print *, 'Error input'
  41.               endif
  42.           elseif (command .EQ. 5) then
  43.               print *, 'Exit'
  44.               is_interrupted = .TRUE.
  45.           elseif (is_created) then
  46.               if (command .EQ. 2) then
  47.                   print *, 'Area: ', area()
  48.               elseif (command .EQ. 3) then
  49.                   print *, 'Minimal angle: ', min_angle()
  50.               elseif (command .EQ. 4) then
  51.                   print *, 'Minimal angle cosinus: ', min_angle_cos()
  52.               else
  53.                   print *, 'Error input'
  54.               endif
  55.           else
  56.               print *, 'Error input'
  57.           endif
  58.  
  59.           goto 10
  60.       endif
  61.  
  62.       return
  63.       end
  64.  
  65. c Triangle setup
  66.       logical function triangle_setup()
  67.       implicit none
  68.       real side, angle1, angle2, angle3, pi
  69.       common / input / side, angle1, angle2
  70.       common / garbage / angle3, pi
  71.  
  72.       real temp
  73.  
  74.       temp = angle1 + angle2
  75.       triangle_setup = .FALSE.
  76.  
  77.       if (temp .LT. 180 .AND. angle1 .GT. 0 .AND.
  78.      +        angle2 .GT. 0 .AND. side .GT. 0) then
  79.           angle3 = real(180) - temp
  80.           triangle_setup = .TRUE.
  81.       endif
  82.  
  83.       return
  84.       end
  85.  
  86. c Compute area
  87.       real function area()
  88.       implicit none
  89.       real side, angle1, angle2, angle3, pi
  90.       common / input / side, angle1, angle2
  91.       common / garbage / angle3, pi
  92.  
  93.       area = 0.5 * (sin(angle1 * pi / 180)
  94.      +    * sin(angle3 * pi / 180) / sin(angle2 * pi / 180)) * (side**2)
  95.  
  96.       return
  97.       end
  98.  
  99. c Compute minimal angle
  100.       real function min_angle()
  101.       implicit none
  102.       real side, angle1, angle2, angle3, pi
  103.       common / input / side, angle1, angle2
  104.       common / garbage / angle3, pi
  105.  
  106.       if (angle1 .LE. angle2 .AND. angle1 .LE. angle3) then
  107.           min_angle = angle1
  108.       elseif (angle2 .LE. angle1 .AND. angle2 .LE. angle3) then
  109.           min_angle = angle2
  110.       else
  111.           min_angle = angle3
  112.       endif
  113.  
  114.       return
  115.       end
  116.  
  117. c Compute minimal angle's cos
  118.       real function min_angle_cos()
  119.       implicit none
  120.       real side, angle1, angle2, angle3, pi, min_angle
  121.       common / input / side, angle1, angle2
  122.       common / garbage / angle3, pi
  123.  
  124.       min_angle_cos = cos(min_angle() * pi / 180)
  125.  
  126.       return
  127.       end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement