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

Табл. 1.1.Определение значения дирекционного угла

Знаки приращения координат

Название четверти

Формула дирекционного угла

+

+

I

 = r

-

+

II

r

-

-

III

r

+

-

IV

r

Горизонтальное расстояние между точками может быть определено по формуле:

(1.3)

или по формуле:

(1.4)

Перевод вычисленного дирекционного угла в градусную меру может быть выполнен различными способами. Один из возможных способов следующий:

· Переводим величину в градусную меру

;

· Выделяем целую часть ;

· Вычисляем остаток и переводим его в минуты

;

· Вычисляем целое число минут

;

· Определяем остаток минут, переводим в секунды и округляем до целого

.

Значение дирекционного угла в градусах, минутах и секундах дают, соответственно, значения переменных m, s.

1.2 Постановка задачи

Даны координаты 2-х точек х и у. Определить дирекционный угол прямой ху.

1.3 Исходные данные

Вариант 5

A)

B)

1.4 Блок-схема алгоритма

Процедура «PerevodRadDeg» предназначена для перевода используемых значений углов из радиан в градусы.

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

А) Файл исходных данных

Задача А

Точка 1.

Координата X:

4608.35

Координата Y:

4159.05

Точка 2.

Координата X:

5267.01

Координата Y:

2501.18

Задача В

Точка 1.

Координата X:

4299.05

Координата Y:

10859.16

ТОчка 2.

Координата X:

2727.40

Координата Y:

10590.88

Program Zadacha_1;

Uses CRT; {подключение библиотеки CRT}

Var i,j,k:integer; {объявляем тип переменных}

X1,X2,Y1,Y2,dX,dY,r,DirRad,S,UgolDeg,UgolMinPromedg,DirDeg,DirMin,DirSec:real;

input,output:text;

Procedure PerevodRadDeg(Var DirRad:real); {подпрограмма для перевода дирекционного угла из радиан в градусы}

Var DirDeg,DirMin,DirSec,UgolMinPromedg,UgolDeg:real; {объявляем тип переменных, используемых в процедуре}

Begin

UgolDeg:=(180*DirRad)/Pi; {переводим угол в градусы}

DirDeg:=int(UgolDeg); {выделяем целое количество градусов из полученного угла}

UgolMinPromedg:=60*(UgolDeg-DirDeg); {промежуточное вычисление}

DirMin:=int(UgolMinPromedg); {выделяем целое количество минут}

DirSec:=int(60*(UgolMinPromedg-DirMin));{выделяем целое количество секунд}

Writeln(DirDeg:3:0,' gradusov',DirMin:3:0,' minut',DirSec:3:0,' secund');Writeln; {выводим полученный результат на экран}

Writeln(output,DirDeg:3:0,' gradusov',DirMin:3:0,' minut',DirSec:3:0,' secund');{выводим полученный результат в файл}

Writeln(output);

end; {завершение подпрограммы}

Begin {начало основной программы}

Clrscr; {очистка экрана}

Assign(input,'dano.txt'); {связывание файла исходных данных с именем}

Assign(output,'rezultat.txt'); {связывание файла выходных данных с именем}

Reset(input); {объвление файла для чтения исходных значений}

Rewrite(output); {объявление файла для записи полученных результатов}

Readln(input);Readln(input); {Пропуск строк в файле исх.значений}

Readln(input,X1); {чтение координаты X1 из файла}

Readln(input); {Пропуск строк в файле исх.значений}

readln(input,Y1); {чтение координаты Y1 из файла}

Readln(input);Readln(input);Readln(input); {Пропуск строк в файле исх.значений}

Readln(input,X2); {чтение координаты X2 из файла}

Readln(input); {Пропуск строк в файле исх.значений}

Readln(input,Y2); {чтение координаты Y2 из файла}

Begin

dX:=X2-X1;dY:=Y2-Y1; {вычисление приращений}

Writeln('Priraschenie po abscisse: ',dX:6:3); {вывод полученных приращение на экран}

Writeln; {пропуск пустой строки}

Writeln('Priraschenie po ordinate: ',dY:6:3); {вывод полученных приращений на экран}

writeln; {пропуск пустой строки}

Writeln(output,'Priraschenie po abscisse: ',dX:6:3);{вывод полученных приращений в файл}

Writeln(output); {пропуск пустой строки в файле}

Writeln(output,'Priraschenie po ordinate: ',dY:6:3); {вывод полученных приращений на экран}

Writeln(output); {пропуск пустой строки в файле}

end;

Begin

r:=arctan(abs(dY/dX)); {вычисление румба}

Writeln('Velichina rumba: ',r:6:3); {вывод румба на экран}

Writeln; {пропуск пустой строки}

Writeln(output,'Velichina rumba: ',r:6:3); {вывод румба в файл}

Writeln(output); {пропуск пустой строки в файле}

end;

Begin

If (dX>0) and (dY>0) then Begin {вычисление дирекционного угла в зависимости от знаков приращений}

DirRad:=r;

Writeln('Rumb I chetverti');

Writeln(output,'Rumb I chetverti');

end;

If (dX<0) and (dY>0) then Begin

DirRad:=Pi-r;

Writeln('Rumb II chetverti');Writeln;

Writeln(output,'Rumb II chetverti');Writeln(output);

end;

If (dX<0) and (dY<0) then Begin

DirRad:=Pi+r;

Writeln('Rumb III chetverti');Writeln;

Writeln(output,'Rumb III chetverti');Writeln(output);

end;

If (dX>0) and (dY<0) then Begin

DirRad:=2*Pi-r;

Writeln('Rumb IV chetverti');Writeln;

Writeln(output,'Rumb IV chetveri');Writeln(output);

end;

end;

PerevodRadDeg(DirRad); {перевод дирекционного угла из радиан в градусы с использованием подпрограммы}

Begin

S:=sqrt((sqr(dX)+sqr(dY))); {вычисление горизонтального проложения}

Страница:  1  2  3  4  5  6  7  8  9 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы