Министерство Образования и Науки Российской Федерации
НГТУ
Лабораторная работа №1
по дисциплине
Программирование вычислений
Факультет: ПМИ
Группа: ПМ-54
Студенты: Коновалов А.В.
Брит С. В.
Ягофаров А.О.
преподаватель: Рояк С. Е.
Токарева М.Г.
Новосибирск
2007 г.
1.Математическая модель
Условие задачи:
Треугольник задаётся двумя сторонами и углом между ними. Найти площадь треугольника, наименьший угол и косинус наименьшего угла.
Анализ:
Дано: а, b – стороны треугольника, γ – угол между ними.
Для нахождения площади будем использовать формулу:
S = аγ
Для нахождения наименьшего угла воспользуемся свойством: «против наименьшей стороны лежит наименьший угол». Для этого вычислим третью сторону по теореме косинусов:
c =
Выберем среди сторон наименьшею. Затем из соотношения (теорема синусов) найдём наименьший угол лежащий против наименьшей стороны. Допустим наименьшая сторона a, тогда
α = - наименьший угол, d = cosα соответственно косинус этого угла.
2.Проект программы
proс main
scalar b, c, w, a, l, number (number{1, 2, 3} )
case number of
part(1) [вычисляем площадь]
w:= π *w/180
s:=b*c*sin(w)/2
part(2) [вычисляем минимальный угол]
l:=
a=l
if(b ≤ a) a:=b
if(c < a) a:=c
a:=sin(w)*a/l
a:=arcsin(a)
a:=a*180/π
part(3) [вычисляем косинус минимального угла]
a:= π *a/180
a:=cos(a)
esac
corp
3.Система тестов
Стороны |
Угол |
Площадь |
Минимальный угол (в градусах) |
Косинус минимального угла |
|
-10 |
23 |
12 |
- |
- |
- |
90 |
13 |
181 |
- |
- |
- |
0 |
8 |
32 |
- |
- |
- |
20 |
20 |
-20 |
- |
- |
- |
2 |
8 |
0 |
- |
- |
- |
5 |
5 |
90 |
12,5 |
45 |
0,7071067 |
12,035 |
12,035 |
60 |
62,7180901 |
60 |
0,5 |
9 |
9 |
60 |
35,0740288 |
60 |
0,5 |
1 |
1 |
179,9 |
8,7266418e-4 |
0,05 |
0,9999996 |
350,52 |
32.09 |
54,3 |
4567,233603 |
4.490903 |
0.9969298 |
4.Программа
!главная
program main
common/abc/real b,c,w,a
1 print *, '1. Vvod novogo treugolnika'
print *, '2. Ploshad treugolnika'
print *, '3. Vychislenie minimalnogo ugla'
print *, '4. Vychislenie cosinusa minimalnogo ugla'
print *, '5. Vyhod'
read *, number
if (number.eq.1) call vvod
if (number.eq.2) call sq
if (number.eq.3) then
call minW
write(*,*) a
end if
if (number.eq.4) call co
if (number.eq.5) stop 'EXIT'
Goto 1
end
!вводим величины
subroutine vvod
common/abc/ b,c,w
2 write(*,*)'<ENTER>:'
read(*,*)b,c,w
if(c.le.0.or.b.le.0.or.w.le.0.or.w.ge.180) then
write(*,*) 'DATA UNCORRECT!'
goto 2
end if
w=3.1415926*w/180.0
end
!вычисляем площадь
subroutine sq
common/abc/ b,c,w
s=b*c*sin(w)/2.0
write(*,*) s
end
!вычисляем минимальный угол
subroutine minW
common/abc/ b,c,w,a
real l
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.