Министерство образования и науки Российской Федерации
Новосибирский государственный технический университет
Кафедра прикладной математики
Лабораторная работа №1
По дисциплине: Программирование вычислений
Группа:ПМ-75
Студенты :Богомолова Е.В.
Смелых Н.А.
Преподаватели: Рояк С.Е.
Рояк М.Э.
Новосибирск
2009
Цель работы: ознакомление с основными операторами языка ФОРТРАН, отслеживание возможностей переполнения и исчезновения порядка при вычислениях, знакомство с погрешностью вычислений.
Задание: Написать программу, реализующую на языке ФОРТРАН вычисление заданного набора геометрических характеристик треугольников с использованием меню. Меню должно содержать следующие пункты:
1. Ввод нового треугольника.
2. Вычисление площади треугольника.
3. Вычисление минимального угла в градусах.
4. Вычисление косинуса минимального угла.
5. Окончание работы.
Треугольник задается координатами вершин, используя формулу Герона.
Математическая модель
1. При вводе параметров треугольника осуществляется проверка корректности данных (точки не лежат на одной прямой, точки не совпадают).
2. Нахождение длин сторон по координатам точек
3. Нахождение площади треугольника:
a,b,с-стороны треугольника
Так как против меньшей стороны находится меньший угол, то сначала находим меньшую сторону, а затем воспользуемся теоремой косинусов:
Так как против меньшей стороны находится меньший угол, то сначала находим меньшую сторону, а затем воспользуемся теоремой косинусов:
ü Нахождение минимальной стороны осуществляется с помощью конструкции IF-ELSE
Задачи решены с применением модульности.
Текст программы:
PROGRAM Lab1
call Menu()
END
c /***************************МЕНЮ**************************/
SUBROUTINE Menu()
common /Str/ S
common /vych/ cos_u,ugol
99 print *, 'Viberite punkt menu:'
print *, '1)Vvesti koordinaty treugolnika'
print *, '2)Ploshad" Treugolnika'
print *, '3)Minimal"nii ugol '
print *, '4)COS ugla'
print *, '5)Exit'
read *, I
goto (1,2,3,4,5) I
1 call Input()!Ввод координат
goto 99
2 call Strka()!Площадь треугольника
print *, 'S=',S
pause
print *, '_______________________'
goto 99
3 call minugol()!Минимальный угол
print *, 'UGOL=',ugol
pause
print *, '_______________________'
goto 99
4 call mincos()!Cos минимального угла
print *,'COS=', cos_u
pause
print *, '_______________________'
goto 99
5 END!ВЫХОД
c /********************Ввод координат********************/
SUBROUTINE Input()
common /Coord/ x1,y1,x2,y2,x3,y3
integer*1 prjamaja
integer*1 tochka
integer*1 diapazon
print *, 'Enter coordinates:'
print *,'x1,y1'
read *,x1,y1
print *,'x2,y2'
read *,x2,y2
print *,'x3,y3'
read *,x3,y3
c Проверки
IF(prjamaja().EQ.0)THEN
print *,'NE KORREKTNIY VVOD, pryamaya '
return
endIF
IF(tochka().EQ.0)THEN
print *,'NE KORREKTNIY VVOD, tochki sovpadayt'
endIF
c После исследований программы,дополнительное ограничение на диапазон
IF(diapazon().EQ.0)THEN
print *,'NE KORREKTNIY VVOD,vishli za diapazon'
endIF
END
c /***************Вычисление длин сторон*****************/
SUBROUTINE Calcsides()
common /Coord/ x1,y1,x2,y2,x3,y3
common /sides/ a,b,c
common /dxy/ dx21,dy21,dx31,dy31,dx32,dy32
dx21 = x2-x1
dy21 = y2-y1
a = sqrt(dx21*dx21 + dy21*dy21)
dx31 = x3-x1
dy31 = y3-y1
b = sqrt(dx31*dx31 + dy31*dy31)
dx32 = x3-x2
dy32 = y3-y2
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.