МИНИСТЕРСТВО ОБРАЗОВАНИЯ РФ
НГТУ
КАФЕДРА ПРИКЛАДНОЙ МАТЕМАТИКИ
ЛАБОРАТОРНАЯ РАБОТА № 1
ПО ДИСЦИПЛИНЕ:
ПРОГРАММИРОВАННИЕ ВЫЧИСЛЕНИЙ
ГРУППА: ПМ-21
СТУДЕНТЫ: Воронов А.С.
Кобец Е. В.
ПРЕПОДАВАТЕЛЬ:
НОВОСИБИРСК 2004 г.
1. Условие задачи
Написать программу, реализующую на языке ФОРТРАН вычисление заданного набора геометрических характеристик треугольников с использованием меню.
Использовать вариант треугольника при котором даны три стороны
2. Анализ задачи
Дано: Три стороны.
Результат: Площадь треугольника, минимальный угол в треугольнике, косинус минимального угла.
Метод решения: При вычислении площади треугольника воспользуемся формулой Герона. При вычислении угла воспользуемся формулой арккосинуса от косинуса минимального угла. При вычислении косинуса угла воспользуемся теоремой косинуса с учетом того, что наименьший угол лежит напротив наименьшей стороны.
Каждое действие реализуем в виде подпрограммы.
Vvod – подпрограмма ввода данных. Происходит проверка на верность данных (сумма 2-х сторон больше третьей и длины сторон не отрицательны) и обнуление всех прежних результатов. При проверке суммы длин двух сторон учитывается некоторая погрешность.
Максимально возможный порядок сторон: 1019
Минимально возможный порядок сторон: 10-22
Plosh – подпрограмма расчета площади. Происходит расчет площади по формуле Герона при условии, что данные уже введены или, что площадь еще ни разу не считалась. Использование формулы Герона наиболее выгодно, так как она позволяет вычислить площадь через уже известные три стороны.
Minim – подпрограмма расчета минимального угла через его косинус. Происходит проверка на введенные данные, проверка вычислялся ли уже этот угол, затем проверяется, вычислялся ли косинус до этого, если нет, то запускается функция вычисления косинуса.
Точность числа =3,1414926.
Minim_cos – подпрограмма расчета косинуса минимального угла. Происходит проверка на введенные данные и проверяется, происходило ли вычисление косинуса до этого, затем находится минимальная сторона, и вычисление косинуса противолежащего ей угла по теореме косинусов.
3. Текст программы
program main
common /var/a,b,c,s,angle,cos_angle,pi,i,p,ep
pi=3.1415926
ep=0
a=0
s=0
angle=0
cos_angle=0
6 print *,'-MENU-'
print *,'1-Enter'
print *,'2-Vichislit S'
print *,'3-Vichislit min'
print *,'4-Vichislit cos min'
print *,'5-Vihod'
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 program main
subroutine vvod
common /var/a,b,c,s,angle,cos_angle,pi,i,p,ep
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
if (a .le. 0 .or. b .le. 0 .or. c .le. 0) then
a=0
else
c a+b-c <= ep || b+c-a <= ep || a+c-b <= ep
if (a+b-c.le.ep.or.b+c-a.le.ep.or.a+c-b.le.ep) then
a=0
end if
end if
end subroutine vvod
subroutine plosh
common /var/a,b,c,s,angle,cos_angle,pi,i,p,ep
real p
if (a .eq. 0) then
print *,'Neverno vvedeni dannie'
return
end if
if (s .eq. 0) then
p=(a+b+c)/2
s=(p*(p-a)*(p-b)*(p-c))**0.5
end if
print *,'S= ',s
end subroutine plosh
subroutine minim
common /var/a,b,c,s,angle,cos_angle,pi,i,p,ep
if (a .eq. 0) then
print *,'Neverno vvedeni dannie'
return
end if
if (angle .eq. 0) then
if (cos_angle .eq. 0) then
call minim_cos
end if
angle= (acos (cos_angle))*180./pi
end if
print *,'Min = ',angle
end subroutine minim
subroutine minim_cos
common /var/a,b,c,s,angle,cos_angle,pi,i,p,ep
if (a .eq. 0) then
print *,'Neverno vvedeni dannie'
return
end if
if (cos_angle .eq. 0) then
if (a .lt. b) then
if (a .lt. c) then
cos_angle=(b*b+c*c-a*a)/(2*b*c)
else
cos_angle=(b*b+a*a-c*c)/(2*b*a)
end if
else
if (b .lt. c) then
cos_angle=(a*a+c*c-b*b)/(2*a*c)
else
cos_angle=(b*b+a*a-c*c)/(2*b*a)
end if
end if
end if
print *,'Cos = ',cos_angle
end subroutine minim_cos
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.