Министерство науки и образования Российской Федерации
Новосибирский государственный технический университет
Лабораторная работа №1
Вычисление набора геометрических характеристик треугольника
Группа: ПМ-75
Студент: Шаденко М.С.
Вариант: № 2
Преподаватели: Рояк М.Э.
Рояк C.E.
Новосибирск 2009 г.
1) Условие задачи:
Треугольник задается тремя сторонами. Найти площадь треугольника, наименьший угол и косинус наименьшего угла.
Анализ:
Дано: а, в, с – стороны треугольника.
Для проверки входных данных используется неравенство треугольника: сумма двух сторон больше максимальной.
Для нахождения площади будем использовать формулу Герона:
s=(p*(p-a)*(p-b)*(p-c))**0.5
Так как против меньшей стороны находится меньший угол, то сначала находим меньшую сторону, а затем косинус с помощью теоремы косинусов:
cos(α)=(a2-b2-c2)/2ab;
Так как против меньшей стороны находится меньший угол, то сначала находим меньшую сторону, а затем косинус с помощью теоремы косинусов, затем найдем арккосинус угла:
angle= (acos (cos_angle))*180./3.1415926535
3. Программа
1 общий случай
program main
common /var/a,b,s,angle,cos_angle,pi,i,p
pi=3.1415926535
a=0
s=0
angle=0
cos_angle=0
6 print *,'-MENU-'
print *,'1-Input new rectangle'
print *,'2- Square rectangle'
print *,'3-min angle'
print *,'4-cos min angle'
print *,'5-exit'
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
c--------------------------------------------------------------
vvod storon
c--------------------------------------------------------------
subroutine vvod
common /var/a,b,s,angle,cos_angle,pi,i,p
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
c----------------------------------------------------------------
if (a .le. 0 .or. b .le. 0 .or. c .le. 0) then
a=0
else
c-----------------------------------------------------------------
a+b <= c || b+c <= a || a+c <= b
c-------------------------------------------------------------------
if (a+b .le. c .or. b+c .le. a .or. a+c .le. b) then
a=0
end if
end if
end
c--------------------------------------------------------------
vuchislenie ploshadi
c--------------------------------------------------------------
subroutine plosh
common /var/a,b,c,s,angle,cos_angle,pi,i,p
real p
if (a .le. 0) then
print *,'Neverno vvedeni dannie'
return
end if
if (s .le. 0) then
p=(a+b+c)/2
s=(p*(p-a)*(p-b)*(p-c))**0.5
end if
print *,'S= ',s
end
c----------------------------------------------------------------
vuchislenie minimalnogo ygla
c----------------------------------------------------------------
subroutine minim
common /var/a,b,c,s,angle,cos_angle,pi,i,p
if (a .le. 0) then
print *,'Neverno vvedeni dannie'
return
end if
if (angle .le. 0) then
if (cos_angle .le. 0) then
call minim_cos
end if
angle= (acos (cos_angle))*180./pi
end if
print *,'Min = ',angle
end
c------------------------------------------------------------------
vuchislenie cos minimalnogo ygla
c------------------------------------------------------------------
subroutine minim_cos
common /var/a,b,c,s,angle,cos_angle,pi,i,p
if (a .le. 0) then
print *,'Neverno vvedeni dannie'
return
end if
if (a.le.b).and.(a.le.c)then
cos_angle=((a**2)-((b**2)+(c**2)))/(-2.0)*b*c)
else
if(b.le.a).and.(b.le.c)then
cos_angle=((b**2)-((a**2)+(c**2)))/((-2.0)*a*c)
else
if (c.le.a).and.(c.le.b))then
cos_angle=((c**2)-((a**2)+(b**2)))/((-2.0)*a*b)
end if
end if
end if
print *,'Cos = ',cos_angle
return
end
2 случай
program main
real*8 function findc(a,b,c)
real*8 a
real*8 b
common /var/a,b,s,angle,cos_angle,pi,i,p
pi=3.1415926535
a=0
s=0
angle=0
cos_angle=0
6 print *,'-MENU-'
print *,'1-Input new rectangle'
print *,'2- Square rectangle'
print *,'3-min angle'
print *,'4-cos min angle'
print *,'5-exit'
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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.