Написание программы, реализующей на языке ФОРТРАН ввод нового треугольника и вычисление площади треугольника, страница 2

Сторона а

cos(α)

Площадь треугольника S

109

Сторона а

cos(α)

Площадь треугольника S

1012

Сторона а

cos(α)

Площадь треугольника S

1013

Сторона а

cos(α)

Площадь треугольника S

1015

Вывод:

Сторона а

cos(α)

Площадь треугольника S

1014


Исследование 3:

Число π

Сторона а

cos(α)

Площадь треугольника S

1

3.1415

1Е+008

0.5000268

4.3300497E+015

2

3.14159

1Е+008

0.5000008

4.3301248E+015

3

3.141592

1Е+008

0.5000002

4.3301264E+015

4

3.1415926

1Е+008

0.5000001

4.3301270E+015

5

3.14159265

1Е+008

0.5000000

4.3301270E+015

6

3.1415927

1Е+008

0.5000000

4.3301270E+015


6.  Текст программы


program main

      call menu

      end

      subroutine menu

      common/pr/lenght1,lenght2,lenght3

      real*8 lenght1,lenght2,lenght3

      common/ag/angle1,angle2,angle3,an_min

      integer a,i

1     print *, '1-vvod'

2     print *, '2-minangle'

      print *, '3-mincos'

      print *, '4-square'

      print *, '5-exit'

      read *,a

      if (a.eq.1)call vvod(i)

      if (a.eq.2)call minangle

      if (a.eq.3)call mincos

      if (a.eq.4)call square

      if (a.eq.5)call exit

      if (a.eq.1.and.i.ne.1) then

      print *, 'error'

      pause

      go to 1

      else

      go to 2     

      end if

      end

      subroutine vvod(i)

      common/pr/lenght1,lenght2,lenght3

      real*8 lenght1,lenght2,lenght3

      common/ag/angle1,angle2,angle3,an_min

      common/pi/p

      integer i,j

      real min_an

      print *, 'vvedite 2 storony, ugol i pi'

      read *, lenght1,lenght2,angle1,p

      call proverka(j)

      if (j.ne.0) then

      i=1

      else

      i=0

      end if

      end

      subroutine proverka(j)

      common/pr/lenght1,lenght2,lenght3

      real*8 lenght1,lenght2,lenght3

      common/ag/angle1,angle2,angle3,an_min

      common/pi/p

      integer j

      real rad

      j=1

      if (lenght1.le.0.or.lenght2.le.0)j=0

      if (angle1.le.0.or.angle1.ge.180)j=0

      rad=(p*angle1)/180

      if ((lenght2*sin(rad)).gt.lenght1)j=0

      end

      subroutine minangle

      common/pr/lenght1,lenght2,lenght3

      common/ag/angle1,angle2,angle3,an_min

      real*8 lenght1,lenght2,lenght3

      common/pi/p

      real an_min,rad,sin2

      rad=(p*angle1)/180

      sin2=(lenght2*sin(rad))/lenght1

      rad=asin(sin2)

      angle2=(180*rad)/p

      angle3=180-angle2-angle1

      an_min=min(angle1,angle2,angle3)

      print *,'min angle=', an_min

      end

      subroutine mincos

      common/pr/lenght1,lenght2,lenght3

      real*8 lenght1,lenght2,lenght3

      common/ag/angle1,angle2,angle3,an_min

      common/pi/p

      real rad,mcos

      if (an_min.eq.0) call minangle

      rad=(p*an_min)/180

      mcos=cos(rad)

      print *,'mincos=',mcos

      end

      subroutine square

      common/pr/lenght1,lenght2,lenght3

      real*8 lenght1,lenght2,lenght3

      common/ag/angle1,angle2,angle3,an_min

      common/pi/p

      real s,rad

      if (an_min.eq.0) call minangle

      rad=(p*angle3)/180

      s=lenght2*lenght1*sin(rad)/2

      print *,'square=',s

      end

      subroutine exit

      stop

      end