Вычисление набора геометрических характеристик треугольника (Лабораторная работа № 1)

Страницы работы

Содержание работы

         Министерство науки и образования Российской Федерации

Новосибирский государственный технический университет

Лабораторная работа №1

Вычисление набора геометрических характеристик треугольника

Группа:  ПМ-75

Студент: Шаденко М.С.

Вариант:  № 2

Преподаватели: Рояк М.Э.

                             Рояк  C.E.

Новосибирск 2009 г.

1) Условие задачи:

Треугольник задается тремя сторонами. Найти площадь треугольника, наименьший угол и косинус наименьшего угла.

Анализ:

Дано: а, в, с – стороны треугольника.

Для проверки входных данных используется неравенство треугольника: сумма двух сторон больше максимальной.

Для нахождения площади будем использовать формулу Герона:

s=(p*(p-a)*(p-b)*(p-c))**0.5

Так как против меньшей стороны находится меньший угол, то сначала находим меньшую сторону, а затем косинус с помощью теоремы косинусов:

cos(α)=(a2-b2-c2)/2ab;

Так как против меньшей стороны находится меньший угол, то сначала находим меньшую сторону, а затем косинус с помощью теоремы косинусов, затем найдем арккосинус угла:

angle= (acos (cos_angle))*180./3.1415926535

3. Программа

1 общий случай

    program main

        common /var/a,b,s,angle,cos_angle,pi,i,p

        pi=3.1415926535

        a=0

        s=0

        angle=0

        cos_angle=0

6       print *,'-MENU-'

        print *,'1-Input new rectangle'

        print *,'2- Square rectangle'

        print *,'3-min angle'

        print *,'4-cos min angle'

        print *,'5-exit'

        print *,'Viberete'

        read *,i

        goto (1,2,3,4,5) i

        goto 6

1       call vvod

      goto 6

2       call plosh

      goto 6

3       call minim

      goto 6

4       call minim_cos

      goto 6

5       end

c--------------------------------------------------------------

                       vvod storon

c--------------------------------------------------------------

        subroutine vvod

        common /var/a,b,s,angle,cos_angle,pi,i,p     

        print *,'Vvedite dlini 3-h storon'

        print *,'a:'

        read *,a

        print *,'b:'

        read *,b

        print *,'c:'

        read *,c

        cos_angle=0

        s=0

        angle=0

c----------------------------------------------------------------       

            a<=0   ||    b<=0    || c<=0

c----------------------------------------------------------------           

        if (a .le. 0 .or. b .le. 0 .or. c .le. 0) then

        a=0

        else

c-----------------------------------------------------------------       

              a+b <= c || b+c <= a || a+c <= b

c-------------------------------------------------------------------             

        if (a+b .le. c .or. b+c .le. a .or. a+c .le. b) then

        a=0

        end if

        end if 

        end

c--------------------------------------------------------------

                   vuchislenie ploshadi

c--------------------------------------------------------------        

        subroutine plosh

        common /var/a,b,c,s,angle,cos_angle,pi,i,p     

        real p

        if (a .le. 0) then

        print *,'Neverno vvedeni dannie'

        return

        end if

        if (s .le. 0) then

        p=(a+b+c)/2

        s=(p*(p-a)*(p-b)*(p-c))**0.5

        end if

        print *,'S= ',s

        end

c----------------------------------------------------------------

               vuchislenie minimalnogo ygla

c----------------------------------------------------------------       

        subroutine minim

        common /var/a,b,c,s,angle,cos_angle,pi,i,p     

        if (a .le. 0) then

        print *,'Neverno vvedeni dannie'

        return

        end if

        if (angle .le. 0) then

        if (cos_angle .le. 0) then

        call minim_cos

        end if

        angle= (acos (cos_angle))*180./pi

        end if

        print *,'Min = ',angle

        end

c------------------------------------------------------------------

             vuchislenie cos minimalnogo ygla

c------------------------------------------------------------------

        subroutine minim_cos

        common /var/a,b,c,s,angle,cos_angle,pi,i,p     

        if (a .le. 0) then

        print *,'Neverno vvedeni dannie'

        return

        end if

        if (a.le.b).and.(a.le.c)then

        cos_angle=((a**2)-((b**2)+(c**2)))/(-2.0)*b*c)

        else

        if(b.le.a).and.(b.le.c)then

        cos_angle=((b**2)-((a**2)+(c**2)))/((-2.0)*a*c)

        else

        if (c.le.a).and.(c.le.b))then

        cos_angle=((c**2)-((a**2)+(b**2)))/((-2.0)*a*b)

        end if

        end if

        end if

        print *,'Cos = ',cos_angle

        return

        end

2 случай

  program main

        real*8 function findc(a,b,c)

        real*8 a

        real*8 b

        common /var/a,b,s,angle,cos_angle,pi,i,p

        pi=3.1415926535

        a=0

        s=0

        angle=0

        cos_angle=0

6       print *,'-MENU-'

        print *,'1-Input new rectangle'

        print *,'2- Square rectangle'

        print *,'3-min angle'

        print *,'4-cos min angle'

        print *,'5-exit'

        print *,'Viberete'

        read *,i

        goto (1,2,3,4,5) i

        goto 6

1       call vvod

      goto 6

2       call plosh

      goto 6

3       call minim

      goto 6

4       call minim_cos

      goto 6

5       end

Похожие материалы

Информация о работе