Министерство Общего и Профессионального образования
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Лабораторная работа №1 по курсу
“Программирование вычислений”
Факультет: ПМИ
Группа: ПМ-31
Студенты: Артемьев М.
Гребенюк А.
Тутов А.
Преподаватели: Рояк С. Е.
Токарева М. Г.
Новосибирск
2005
1. Вариант задания:
Треугольник задается стороной, прилежащим и противолежащим углами.
2. Математическая модель:
Дано: A, . Результат: , , ) |
Решения:
В противном случае треугольник не существует: 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()
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.