Использование современной компьютерной техники и программного обеспечения для решения прикладных задач в области геодезических измерений
Табл. 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))); {вычисление горизонтального проложения}
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности