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

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

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

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

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

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

Лабораторная работа №1

По дисциплине: Программирование вычислений

Группа:ПМ-75

Студенты :Богомолова Е.В.

                    Смелых Н.А.

Преподаватели: Рояк С.Е.

                              Рояк М.Э.

Новосибирск

2009


Цель работы: ознакомление с основными операторами языка ФОРТРАН, отслеживание возможностей переполнения и исчезновения порядка при вычислениях, знакомство с погрешностью вычислений.

Задание: Написать программу, реализующую на языке ФОРТРАН вычисление заданного набора геометрических характеристик треугольников с использованием меню. Меню должно содержать следующие пункты:

1.  Ввод нового треугольника.

2.  Вычисление площади треугольника.

3.  Вычисление минимального угла в градусах.

4.  Вычисление косинуса минимального угла.

5.  Окончание работы.

Треугольник задается координатами вершин, используя формулу Герона.

Математическая модель

1.  При вводе параметров треугольника осуществляется проверка корректности данных (точки не лежат на одной прямой, точки не совпадают).

2.   Нахождение длин сторон по координатам точек

3.  Нахождение площади треугольника:

a,b,с-стороны треугольника

  1. Нахождение минимального угла

Так как против меньшей стороны находится меньший угол, то сначала находим меньшую сторону, а затем  воспользуемся теоремой косинусов:

                                   

  1. Нахождение косинуса минимального угла

Так как против меньшей стороны находится меньший угол, то сначала находим меньшую сторону, а затем  воспользуемся теоремой косинусов:

                                 

ü  Нахождение минимальной стороны осуществляется с помощью конструкции IF-ELSE

Задачи решены с применением модульности.


Текст программы:

        PROGRAM Lab1

        call Menu()

        END

c       /***************************МЕНЮ**************************/

        SUBROUTINE Menu()

        common /Str/ S

        common /vych/ cos_u,ugol

99      print *, 'Viberite punkt menu:'

        print *, '1)Vvesti koordinaty treugolnika'

        print *, '2)Ploshad" Treugolnika'

        print *, '3)Minimal"nii ugol '

        print *, '4)COS ugla'

        print *, '5)Exit'

        read *, I

        goto (1,2,3,4,5) I

1       call Input()!Ввод координат

        goto 99

2       call Strka()!Площадь треугольника

        print *, 'S=',S

        pause

        print *, '_______________________'

        goto 99 

3       call minugol()!Минимальный угол

        print *, 'UGOL=',ugol

        pause

        print *, '_______________________'

        goto 99

4       call mincos()!Cos минимального угла

        print *,'COS=', cos_u

        pause

        print *, '_______________________'

        goto 99       

5       END!ВЫХОД

c       /********************Ввод координат********************/  

SUBROUTINE Input()

        common /Coord/ x1,y1,x2,y2,x3,y3

        integer*1 prjamaja

        integer*1 tochka

        integer*1 diapazon

        print *, 'Enter coordinates:'

        print *,'x1,y1'

        read *,x1,y1

        print *,'x2,y2'

        read *,x2,y2

        print *,'x3,y3'

        read *,x3,y3    

c       Проверки

         IF(prjamaja().EQ.0)THEN

         print *,'NE KORREKTNIY VVOD, pryamaya '

         return

         endIF              

         IF(tochka().EQ.0)THEN

         print *,'NE KORREKTNIY VVOD, tochki sovpadayt'

         endIF

c       После исследований программы,дополнительное ограничение на диапазон      

IF(diapazon().EQ.0)THEN

         print *,'NE KORREKTNIY VVOD,vishli za diapazon'

         endIF

         END

c       /***************Вычисление длин сторон*****************/

SUBROUTINE Calcsides()

        common /Coord/ x1,y1,x2,y2,x3,y3

        common /sides/ a,b,c

        common /dxy/ dx21,dy21,dx31,dy31,dx32,dy32

        dx21 = x2-x1

        dy21 = y2-y1

        a = sqrt(dx21*dx21 + dy21*dy21)      

        dx31 = x3-x1  

        dy31 = y3-y1   

        b = sqrt(dx31*dx31 + dy31*dy31)

        dx32 = x3-x2

        dy32 = y3-y2

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

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