Написание программы, реализующей на языке ФОРТРАН вычисление заданного набора геометрических характеристик треугольников с использованием меню (Лабораторная работа № 1)

Страницы работы

Содержание работы

Министерство образования и науки Российской Федерации

Новосибирский государственный технический университет

Кафедра прикладной математики

Лабораторная работа №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          

Похожие материалы

Информация о работе