Министерство образования и науки РФ
Новосибирский Государственный Технический Университет
Кафедра ПМт
Лабораторная работа №1
По программированию вычислений
Факультет: ПМИ
Группа: ПМ-71
Студенты: Бузмакова О.,Зубакова М.
Вариант 8
Новосибирск
2009
Цель работы: ознакомление с основными операторами языка ФОРТРАН, отслеживание возможностей переполнения и исчезновения порядка при вычислениях, знакомство с погрешностью вычислений.
Задание: Написать программу, реализующую на языке ФОРТРАН вычисление заданного набора геометрических характеристик треугольников с использованием меню. Меню должно содержать следующие пункты:
1. Ввод нового треугольника.
2. Вычисление площади треугольника.
3. Вычисление минимального угла в градусах.
4. Вычисление косинуса минимального угла.
5. Окончание работы.
Треугольник задается двумя сторонами и углом между первой стороной и оставшейся.
Математическая модель
Дано:
a – первая сторона, b – вторая сторона, α – угол между a и оставшейся стороной(в градусах)
a b
α β
По теореме синусов имеем :
Таким образом треугольник существует тогда и только тогда, когда
,
Осуществляется проверка параметров треугольника на корректность (значения сторон положительны и лежат в диапозоне [10-22 ,1019], α Î (0,180), возможность существования треугольника, также учитывается случай когда a≥b и α≥90,).
Возможны два случая:
1) а ≤ b : тогда треугольник определяется однозначно.
a b
α β
2) а > b : тогда треугольник определяется НЕ однозначно.
2.1) имеет два решения β1 и β2, где β1 + β2 = 180 0.
b b a
α
2.2) есть частное решение, когда β = 900, тогда треугольник определяется однозначно.
Нахождение площади треугольника:
Нахождение минимального угла:
,
Используя эту формулу можно найти угол между b и оставшейся. Последний угол(γ ) находится исходя из знания суммы углов в треугольнике.
β=arcsin(a*sinα/b)
γ=pi-β-α
если треугольник определяется не однозначно , то
β2=pi-β(см.п.2,1)
γ1=pi-α-β2
Нахождение косинуса минимального угла: Cos (min{α,β,γ}) . В случае не однозначного определения треугольника считаются косинусы обоих минимальных углов.
При решении данной задачи работа осуществлялась с радианной мерой углов.
Формула перевода градусов в радианы: p=k⁰*π/180⁰ .
Текстпрограммы:
program main
common /vvodimie/a,b,ugol
common /pii/pi
common/ugly/ugol1,ugol2,ugol3,ugol4,ugol5
call menu()
end
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
subroutine menu()
common /vvodimie/a,b,ugol
common/ugly/ugol1,ugol2,ugol3,ugol4,ugol5
common /pii/pi
6 print *, '1)vvod parametrov'
print *, '2)ploshad'
print *, '3)min ugol'
print *, '4)Cos'
print *, '5)Exit'
read *, I
goto (1,2,3,4,5) I
1 call vvod()
call proverka1(n,k)
if (n.eq.0.or.k.eq.0) then
print*, 'necorrectnie dannie'
pause
goto 6
endif
call proverka2(j)
if (j.eq.0) goto 6
call ugly_()
goto 6
2 if(b.ge.a)then
call square1(ugol3,w)
print*,'ploshad=',w
pause
else
if(a*sin(ugol1).eq.b)then
z=a*b/2
print*,'treygolnik pryamoygolnii'
print*,'ploshad=',z
pause
endif
call square1(ugol3,d)
call square1(ugol5,e)
print*,'treugolnik opredelen NE odnoznachno'
print*,'ploshad 1=',d
print*,'ploshad 2=',e
pause
endif
goto 6
3 if(b.ge.a)then
call min_ugol(ugol1,ugol2,ugol3,f)
f=f*180/pi
print*,'min ugol=',f
pause
else
call min_ugol(ugol1,ugol4,ugol5,g)
call min_ugol(ugol1,ugol2,ugol3,h)
g=g*180.0/pi
h=h*180.0/pi
print*,'treugolnik opredelen NE odnoznachno'
print*,'min_ugol 1=',g
print*,'min_ugol 2=',h
pause
endif
goto 6
4 if(b.ge.a)then
call cos_min_ugol(ugol1,ugol2,ugol3,pp)
print*,'cos min ugla=',pp
pause
else
call cos_min_ugol(ugol1,ugol2,ugol3,p1)
call cos_min_ugol(ugol1,ugol4,ugol5,p2)
print*,'treugolnik opredelen NE odnoznachno'
print*,'cos min_ugol 1=',p1
print*,'cos min_ugol 2=',p2
pause
endif
goto 6
5 end
!!vvod dannix!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
subroutine vvod()
common /vvodimie/a,b,ugol
common /pii/pi
common/ugly/ugol1,ugol2,ugol3,ugol4,ugol5
print*, 'vvedite dannie'
read*,a,b,ugol
pi=3.14159265
ugol1=ugol*pi/180.0
end
!!ostalnye ugly!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.