Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program main
- implicit none
- real A, B, Alpha, Betta, Gamma, degToRad, RadToDeg, PI
- real area_triangle
- real min_ang
- real cos_min_ang
- integer ch
- common /Global/ Betta, A, B
- common /angles/ Alpha, Gamma
- common /degree/degToRad, RadToDeg
- common /const/PI
- PI = 3.1415926
- degToRad = PI/180
- RadToDeg = 180/PI
- 10 write (*,*) '1 Entering a new triangle'
- write (*,*) '2 Calculated a area triangle'
- write (*,*) '3 Calculated the minimum angle in degree'
- write (*,*) '4 Calculating the cosine of the minimum angle'
- write (*,*) '5 Exit'
- read (*,*) ch
- goto (1,2,3,4,5), ch
- write (*,*) 'wrong argument'
- goto 10
- 1 call input_p
- goto 10
- 2 print *, 'Triangle area is: ', area_triangle()
- goto 10
- 3 print *, 'Minimum angle: ', min_ang()
- goto 10
- 4 print *, 'Cosine of the minimum angle: ', cos_min_ang()
- goto 10
- 5 stop
- end
- subroutine input_p
- implicit none
- real A, B, Betta, PI, degToRad, RadToDeg
- common /degree/degToRad, RadToDeg
- common /const/PI
- common /Global/ Betta, A, B
- write (*,*) 'input A'
- read (*,*) A
- write (*,*) 'input B'
- Read (*,*) B
- write (*,*) 'input Betta'
- Read (*,*) Betta
- Betta = Betta*degToRad
- return
- end
- real function area_triangle()
- implicit none
- real PI
- real A, B
- real Alpha, Betta, Gamma
- real temp
- common /const/PI
- common /Global/ Betta, A, B
- common /angles/ Alpha, Gamma
- temp=sin(Betta)*A/B
- if(abs(temp).LE.1) then
- Alpha = Asin(temp)
- Gamma = PI - Alpha - Betta
- area_triangle = A*B*sin(Gamma)/2
- else
- area_triangle = 0
- endif
- return
- end
- real function min_ang()
- implicit none
- real Alpha, Betta, Gamma, degToRad, RadToDeg
- real A, B
- common /Global/ Betta, A, B
- common /angles/ Alpha, Gamma
- common /degree/degToRad, RadToDeg
- real PI
- common / const/ PI
- if(Alpha.LT.Betta) then
- if(Alpha.LT.Gamma) then
- min_ang = Alpha/degToRad
- else if(Gamma.LE.Alpha) then
- min_ang = gamma*RadToDeg
- endif
- else if(Betta.LE.Alpha) then
- if(Betta.LT.Gamma)then
- min_ang=Betta*RadToDeg
- else if(Gamma.LE.Betta) then
- min_ang=gamma*RadToDeg
- endif
- endif
- return
- end
- real function cos_min_ang()
- implicit none
- real min_ang
- real PI, degToRad, RadToDeg
- common / degree / degToRad, RadToDeg
- common / const/ PI
- cos_min_ang=cos(min_ang()*degToRad)
- return
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement