Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Министерство образования и науки Российской Федерации
Новосибирский государственный технический университет
Кафедра прикладной математики
Лабораторная работа №1
По дисциплине: Программирование вычислений
Группа: ПМ-75
Студенты : Рак Б.В.
Путро А.С.
Преподаватели: Рояк С.Е.
Рояк М.Э.
Новосибирск
2009
Цель работы: ознакомление с основными операторами языка ФОРТРАН, отслеживание возможностей переполнения и исчезновения порядка при вычислениях, знакомство с погрешностью вычислений.
Задание: Написать программу, реализующую на языке ФОРТРАН вычисление заданного набора геометрических характеристик треугольников с использованием меню. Меню должно содержать следующие пункты:
1. Ввод нового треугольника.
2. Вычисление площади треугольника.
3. Вычисление минимального угла в градусах.
4. Вычисление косинуса минимального угла.
5. Окончание работы.
Треугольник задается двумя сторонами и углом между первой стороной и оставшейся.
Математическая модель
Решение существует тогда и только тогда, когда
,
где a – первая сторона, b – вторая сторона, α – угол между a и оставшейся стороной.
Осуществляется проверка параметров треугольника на корректность (значения сторон положительны, α Î (0,180), возможность существования треугольника).
Возможны два случая:
1) а ≤ b : тогда треугольник определяется однозначно.
2) а > b : тогда треугольник определяется НЕ однозначно.
2.1) имеет два решения β1 и β2, где β1 + β2 = 180 0.
2.2) есть частное решение, когда β = 900, тогда треугольник определяется однозначно.
Нахождение площади треугольника:
Нахождение минимального угла:
,
Используя эту формулу можно найти угол между b и оставшейся. Последний угол(γ ) находится исходя из знания суммы углов в треугольнике.
min_ugol = min{α,β,γ}
Нахождение косинуса минимального угла: Cos (min{α,β,γ}) .
Задачи решены с применением модульности.
Текст программы:
program laba1
common /tri_in/ side1,side2,ugol
common /tri_out_ugol/ r_ugol1,r_ugol2,r_ugol3,r_ugol21,r_ugol31,
* r_ugolmin
common /pi/ pi
call menu()
end
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
c vyzov menu
subroutine Menu()
common /tri_in/ side1,side2,ugol
common /tri_out_ugol/ r_ugol1,r_ugol2,r_ugol3,r_ugol21,r_ugol31,
* r_ugolmin
common /pi/ pi
real s ! plosad'
integer n
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 proverka(n)
if (n.eq.0) goto 6
call ost_ugly()
goto 6
2 if(side1.le.side2) then !treugol'nik opredelyaetcya odnozna4no
call ploshad(side1,side2,r_ugol3,s)
print *,'ploshad=',s
pause
goto 6
else !treugol'nik opredelyaetcya !!!NE!!! odnozna4no
raa = r_ugol2*180/pi
if(raa.eq.90) then !!!est' slu4ai,kogda opr-cyaodnozna4no : ugol (2-ya^3-ya)=90
call ploshad(side1,side2,r_ugol3,s)
print *,'ploshad=',s
pause
goto 6
else
print *,'2e ploshadi :'
call ploshad(side1,side2,r_ugol3,s)
print *,'ploshad1=',s
call ploshad(side1,side2,r_ugol31,s)
print *,'ploshad1=',s
pause
goto 6
endif
endif
3 if(side1.le.side2) then !treugol'nik opredelyaetcya odnozna4no
call min(r_ugol1,r_ugol2,r_ugol3,r_ugolmin)
r_ugolmin = r_ugolmin*180.0/pi
print *,'MIN_UGOL=',r_ugolmin
pause
goto 6
else !treugol'nik opredelyaetcya !!!NE!!! odnozna4no
raa = r_ugol2*180/pi
if(raa.eq.90) then !!!est' slu4ai,kogda opr-cyaodnozna4no : ugol (2-ya^3-ya)=90)
call min(r_ugol1,r_ugol2,r_ugol3,r_ugolmin)
r_ugolmin = r_ugolmin*180.0/pi
print *,'MIN_UGOL=',r_ugolmin
pause
goto 6
else
print *,'2a ugla:'
call min(r_ugol1,r_ugol2,r_ugol3,r_ugolmin)
r_ugolmin = r_ugolmin*180.0/pi
print *,'min_uhol1=',r_ugolmin
call min(r_ugol1,r_ugol21,r_ugol31,r_ugolmin)
r_ugolmin = r_ugolmin*180.0/pi
print *,'min_uhol2=',r_ugolmin
pause
goto 6
endif
endif
4 if(side1.le.side2) then!treugol'nik opredelyaetcya odnozna4no
Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.