Вычисление треугольника с заданной стороной, прилежащим и противолежащим углами (Лабораторная работа № 1)

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

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

Министерство Общего и Профессионального образования

НОВОСИБИРСКИЙ  ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра ПМИ

Лабораторная работа №1 по курсу

“Программирование вычислений”

Факультет: ПМИ

Группа: ПМ-31

Студенты:  Артемьев М.

                    Гребенюк А.

                    Тутов А.

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

                             Токарева М. Г.

Новосибирск

2005

1. Вариант задания:

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

2. Математическая модель:

Дано: 

A,

Результат:

*, ,

)

Решения:

     По исходным данным всегда можно построить треугольник, если:

1.  A>0

2.  >0

            3.                                                                     

В противном случае треугольник не существует:

1.  Длинна, углы– положительные величины

2.  Сумма углов треугольника =

1) Нахождение площади.

*=.

Из теоремы синусов:

 

Из того, сумма углов треугольника =  и формулы приведения, имеем:

Подставим все в формулы вычисления площади:

При данных, заданных условием, данная формула приведет к наиболее эффективному способу нахождения площади, т.к. промежуточным действием является лишь нахождение .

Погрешность вычислений будет определяться погрешностью нахождения значений sin, а также умножением и делением (в общем случае) на вещественное число.

2) Нахождение минимального угла.

Зафиксируем значение одного из углов (например, ) и будем считать, что оно минимально. Последовательно сравним его с остальными (с и ), изменяя значение на соответствующее, при нахождении меньшего по значению угла.

3) Нахождение косинуса минимального угла.

Данное значение равно косинусу угла, найденного в пункте 2)

3.  Алгоритм:

Программа состоит из 5 подпрограмм, одна из который является управляющей.

Все искомые значения  хранятся в головной подпрограмме, при этом они передаются в каждую из подпрограмм по мере необходимости.

             Механизм, отвечающий за то, чтобы одинаковые действия не выполнялись дважды, состоит в следующем: все искомые величины после ввода новый параметров треугольника принимают значение “–2” – указатель на то, что данное значение еще не вычислялось для такого набора параметров. Результат вычислений записывается в соответствующую переменную. Поскольку не одна из искомых величин не может быть отрицательной (косинус отрицателен, если угол тупой – но по свойствам треугольника, тупой угол не может являться минимальным),  сравнение значения с нулем дает ответ, нужно ли вновь пересчитывать искомое число.

            Помимо корректности входных данных, необходимо проверять, введен  ли набор параметров на случай, если пользователь захочет сразу посчитать, к примеру, мин. угол у несуществующего ещё треугольника.

4. Листинг:

      program laba1

*            implicit logical tr_fl, ugl_fl, cos_fl, s_fl

*_treug - атрибуты треугольника      

             common /treug/a, alfa, beta, pi, s_v, cos_v, ugl_v

             logical tr_fl

             pi=3.1415926/180.

*_true - треугольник не введен

        tr_fl=.true.

7      print *,"1) Vvod novogo treugol'nika"

       print *,"2) Vychislenie ploshhagi treugol'nika"

       print *,"3) Vychislenie minimal'nogo ugla"

       print *,"4) Vychislenie kosinusa minimal'nogo ugla"

       print *,"5) Okonchanie raboty"

        read *,menu

        if(tr_fl.AND.menu.NE.1.AND.menu.NE.5) goto 90

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

*_на случай, если злой юзер введет >5 или <1

        goto 7

1      call vvod()

*_и поставить флажок о вводе

        tr_fl=.false.

        s_v=-2

        cos_v=-2

        ugl_v=-2

        goto 7

*_посчитали площадь - засунули в s_v и поставили флаг

*_если ещё не считал - самое время

2      if (s_v.LT.0) call Rploshad()

              print *, s_v

       goto 7

3      if(ugl_v.LT.0) call Rmin_ugl()

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

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