Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- c Main. Create by Sanya, Nikita and Vanya
- program main
- implicit none
- real side, angle1, angle2, angle3, pi
- common / input / side, angle1, angle2
- common / garbage / angle3, pi
- pi = 3.141592652
- call console()
- stop
- end
- c Console handling
- subroutine console()
- implicit none
- integer command
- logical is_interrupted, is_created, triangle_setup
- real area, min_angle, min_angle_cos
- real side, angle1, angle2, angle3, pi
- common / input / side, angle1, angle2
- common / garbage / angle3, pi
- is_interrupted = .FALSE.
- is_created = .FALSE.
- 10 if (is_interrupted .EQV. .FALSE.) then
- print *, 'Write command: '
- read *, command
- if (command .EQ. 1) then
- print *,
- + 'Input triangle parameters [side, angle1, angle2]: '
- read *, side, angle1, angle2
- if (triangle_setup()) then
- is_created = .TRUE.
- print *, 'Triangle successfully created'
- else
- is_created = .FALSE.
- print *, 'Error input'
- endif
- elseif (command .EQ. 5) then
- print *, 'Exit'
- is_interrupted = .TRUE.
- elseif (is_created) then
- if (command .EQ. 2) then
- print *, 'Area: ', area()
- elseif (command .EQ. 3) then
- print *, 'Minimal angle: ', min_angle()
- elseif (command .EQ. 4) then
- print *, 'Minimal angle cosinus: ', min_angle_cos()
- else
- print *, 'Error input'
- endif
- else
- print *, 'Error input'
- endif
- goto 10
- endif
- return
- end
- c Triangle setup
- logical function triangle_setup()
- implicit none
- real side, angle1, angle2, angle3, pi
- common / input / side, angle1, angle2
- common / garbage / angle3, pi
- real temp
- temp = angle1 + angle2
- triangle_setup = .FALSE.
- if (temp .LT. 180 .AND. angle1 .GT. 0 .AND.
- + angle2 .GT. 0 .AND. side .GT. 0) then
- angle3 = real(180) - temp
- triangle_setup = .TRUE.
- endif
- return
- end
- c Compute area
- real function area()
- implicit none
- real side, angle1, angle2, angle3, pi
- common / input / side, angle1, angle2
- common / garbage / angle3, pi
- area = 0.5 * (sin(angle1 * pi / 180)
- + * sin(angle3 * pi / 180) / sin(angle2 * pi / 180)) * (side**2)
- return
- end
- c Compute minimal angle
- real function min_angle()
- implicit none
- real side, angle1, angle2, angle3, pi
- common / input / side, angle1, angle2
- common / garbage / angle3, pi
- if (angle1 .LE. angle2 .AND. angle1 .LE. angle3) then
- min_angle = angle1
- elseif (angle2 .LE. angle1 .AND. angle2 .LE. angle3) then
- min_angle = angle2
- else
- min_angle = angle3
- endif
- return
- end
- c Compute minimal angle's cos
- real function min_angle_cos()
- implicit none
- real side, angle1, angle2, angle3, pi, min_angle
- common / input / side, angle1, angle2
- common / garbage / angle3, pi
- min_angle_cos = cos(min_angle() * pi / 180)
- return
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement