Горизонтальное расстояние между точками может быть определено по формуле:
(1.3)или по формуле:
(1.4)Перевод вычисленного дирекционного угла в градусную меру может быть выполнен различными способами. Один из возможных способов следующий:
Переводим величину в градусную меру
Выделяем целую часть
;Вычисляем остаток и переводим его в минуты
;Вычисляем целое число минут
;Определяем остаток минут, переводим в секунды и округляем до целого
.Значение дирекционного угла в градусах, минутах и секундах дают, соответственно, значения переменных m, s.
Даны координаты 2-х точек A(х,y) и B(x,y). Определить дирекционный угол прямой AB.
Вариант 2
А) X1 = 5119.94 Y1 = 6157.33
X2 = 7182.27 Y2 = 4976.39
В) X1 = 10932.84 Y1 = 6112.26
X2 = 9115.24 Y2 = 4903.68
1.4. Блок схема для Turbo Pascal*процедура для определения приращений;
**процедура для определение значения дирекционного угла и четверти;
***процедура для перевода из радиан в градусы.
1.5 Текст программы
Program Zadacha1;
Uses CRT;{использование библиотеки}
Var i,j,k:integer;{описание переменных}
x1,y1,x2,y2,x3,y3,x4,y4,Dy,Dx,Dx1,Dy1,R,R1,Alfa,alfa1,S,S1:real;
AlfaGr,AlfaMi,AlfaS,AlfaGr1,AlfaMi1,AlfaS1:real;
t1,t2:text;
{процедура для определения приращений}
procedure Prir (var k1:real; var k2:real; var Dd:real);
begin
Dd:=k2-k1;
end;
{процедура для перевода в грудусы}
procedure Gradyc (var A,AGr,AMi,AS:real);
Var
AG,AM:real;
begin
AG:=180*(A/Pi);
AGr:=int(AG);
AM:=60*(AG-AGr);
AMi:=int(AM);
AS:=int(60*(AM-AMi));
end;
{процедура для определение значения дирекционного угла и четверти}
procedure Analiz (var X,Y,R,A:real);
begin
If (X>0) and (Y>0) Then
Begin
A:=R;
Writeln('I chetvert');
Writeln(t2,'I четверть');
Writeln('Direkcionnii ygol raven(v radianax):');
Writeln(t2,'Дирекционный угол равен(в радианах):');
Writeln(A:6:3);
Writeln(t2,A:6:3);
End;
If (X<0) and (Y>0) Then
Begin
A:=(Pi)-R;
Writeln('II chetvert');
Writeln(t2,'II четверть');
Writeln('Direkcionnii ygol raven(v radianax):');
Writeln(t2,'Дирекционный угол равен(в радианах):');
Writeln(A:6:3);
Writeln(t2,A:6:3);
End;
If (X<0) and (Y<0) Then
Begin
A:=(Pi)+R;
Writeln('III chetvert');
Writeln(t2,'III четверть');
Writeln('Direkcionnii ygol raven(v radianax):');
Writeln(t2,'Дирекционный угол равен(в радианах):');
Writeln(A:6:3);
Writeln(t2,A:6:3);
End;
If (X>0) and (Y<0) Then
Begin
A:=(2*(Pi)-R);
Writeln('IV chetvert');
Writeln(t2,'IV четверть');
Writeln('Direkcionnii ygol raven(v radianax):');
Writeln(t2,'Дирекционный угол равен(в радианах):');
Writeln(A:6:3);
Writeln(t2,A:6:3);
End;
end;
Begin
ClrScr;{очистка экрана}
Assign (t1,'dano.txt');{привязка фаила к переменной}
Assign (t2,'rezultat.txt');
Reset (t1);
Rewrite (t2);
{чтение из фаила исходных значений}
Readln(t1);
Readln(t1);{пропуск строки "Точка 1."}
Readln(t1);{пропуск строки "Координата по оси X:"}
Readln(t1,x1);{чтение из фаила значения координаты по оси X для точки А}
Readln(t1);{пропуск строки "Координата по оси Y:"}
Readln(t1,y1);{чтение из фаила значения координаты по оси Y для точки А}
Readln(t1);{пропуск строки "Точка 2."}
Readln(t1);{пропуск строки "Координата по оси X:"}
Readln(t1,x2);{чтение из фаила значения координаты по оси X для точки B}
Readln(t1);{пропуск строки "Координата по оси Y:"}
Readln(t1,y2);{чтение из фаила значения координаты по оси Y для точки B}
Readln(t1);
Readln(t1);
Readln(t1);{пропуск строки "Точка 1."}
Readln(t1);{пропуск строки "Координата по оси X:"}
Readln(t1,x3);{чтение из фаила значения координаты по оси X для точки А}
Readln(t1);{пропуск строки "Координата по оси Y:"}
Readln(t1,y3);{чтение из фаила значения координаты по оси Y для точки А}
Readln(t1);{пропуск строки "Точка 2."}
Readln(t1);{пропуск строки "Координата по оси X:"}
Readln(t1,x4);{чтение из фаила значения координаты по оси X для точки B}
Readln(t1);{пропуск строки "Координата по оси Y:"}
Readln(t1,y4);{чтение из фаила значения координаты по оси Y для точки B}
Readln(t1);
Begin
{определение приращений координат}
Prir(x1,x2,Dx);
Prir(y1,y2,Dy);
Prir(x3,x4,Dx1);
Prir(y3,y4,Dy1);
{проведение контроля полученных значений}
Writeln('Prirasheniya zadaniya A');{вывод на экран надписи "Приращения для задания А"}
Writeln(t2,'Приращения для задания А');{вывод в фаил надписи "Приращения для задания А"}
Writeln('Po oci X');{вывод на экран надписи "По оси X"}
Writeln(t2,'По оси X');{вывод в фаил надписи "По оси X"}
Writeln(Dx:6:2);{вывод значения для X на экран}
Writeln(t2,Dx:6:2);{вывод значения для X в фаил}
Writeln('Po oci Y');{вывод на экран надписи "По оси Y"}
Writeln(t2,'По оси Y');{вывод в фаил надписи "По оси Y"}
Writeln(Dy:6:2);{вывод значения для Y на экран}
Writeln(t2,Dy:6:2);{вывод значения для Y в фаил}
Writeln('Prirasheniya zadaniya B');{вывод на экран надписи "Приращения для задания B"}
Writeln(t2,'Приращения для задания B');{вывод в фаил надписи "Приращения для задания B"}
Writeln('Po oci X');{вывод на экран надписи "По оси X"}
Writeln(t2,'По оси X');{вывод в фаил надписи "По оси X"}
Writeln(Dx1:6:2);{вывод значения для X на экран}
Writeln(t2,Dx1:6:2);{вывод значения для X в фаил}
Writeln('Po oci Y');{вывод на экран надписи "По оси Y"}
Writeln(t2,'По оси Y');{вывод в фаил надписи "По оси Y"}
Writeln(Dy1:6:2);{вывод значения для Y на экран}
Writeln(t2,Dy1:6:2);{вывод значения для Y в фаил}
End;
Begin
{нахождение величины румба}
R:=arctan(abs(Dy/Dx));
R1:=arctan(abs(Dy1/Dx1));
{проведение контроля полученного значения}
Writeln('RYMB zadaniya A');{вывод на экран надписи "Румб для задания А"}
Writeln(t2,'Румб для задания А');{вывод в фаил надписи "Румб для задания А"}
Writeln(R:6:6);{вывод значения на экран}
Writeln(t2,R:6:6);{вывод значения в фаил}
Writeln('RYMB zadaniya B');{вывод на экран надписи "Румб для задания B"}
Writeln(t2,'Румб для задания А');{вывод в фаил надписи "Румб для задания B"}
Writeln(R1:6:6);{вывод значения на экран}
Writeln(t2,R1:6:6);{вывод значения в фаил}
End;
Begin
{определение значения дирекционного угла и четверти}
Writeln('Direkcionnii ygol i chetvert dly A');
Writeln(t2,'Дирекционный угол и четверть для задания А:');
Analiz (Dx,Dy,R,Alfa);
Writeln('Direkcionnii ygol i chetvert dly B');
Writeln(t2,'Дирекционный угол и четверть для задания B:');
Analiz (Dx1,Dy1,R1,Alfa1);
End;
Begin
{ВЫчисление горизонтального расстояния между точками}
S:=sqrt((Sqr(Dx)+sqr(Dy)));
S1:=sqrt((Sqr(Dx1)+sqr(Dy1)));
{вывод полученного значения}
Writeln('Gorizontalnoe Rasstoyanie mezdy tochkami Ravno(dly A):');
Writeln(t2,'Горизонтальное расстояние между точками равно(для задания А):');
Writeln(S:6:2);
Writeln(t2,S:6:2);
Writeln('Gorizontalnoe Rasstoyanie mezdy tochkami Ravno(dly B):');
Writeln(t2,'Горизонтальное расстояние между точками равно(для задания B):');
Writeln(S1:6:2);
Writeln(t2,S1:6:2);
End;
Begin
{перевод дирекционного угла в градусную меру}
Gradyc (Alfa,AlfaGr,AlfaMi,AlfaS);
Gradyc (Alfa1,AlfaGr1,AlfaMi1,AlfaS1);
{вывод полученного дирекционного угла}
Writeln('Direkcionnii ygol raven(dly A):');
Writeln(t2,'Дирекционный угол равен(для задания А):');
Writeln(AlfaGr:6:0,' gradycov',AlfaMi:6:0,' minyt',AlfaS:6:0,' sekynd');
Writeln(t2,AlfaGr:6:0,' градусов',AlfaMi:6:0,' минут',AlfaS:6:0,' секунд');
Writeln('Direkcionnii ygol raven(dly B):');
Writeln(t2,'Дирекционный угол равен(для задания B):');
Writeln(AlfaGr1:6:0,' gradycov',AlfaMi1:6:0,' minyt',AlfaS1:6:0,' sekynd');
Writeln(t2,AlfaGr1:6:0,' градусов',AlfaMi1:6:0,' минут',AlfaS1:6:0,' секунд');
End;
Writeln('chtenie iz faila "dano.txt", zapis v "rezultat.txt"');
Close (t1);
Close (t2);
Readkey;
End.
1.6 Содержание фаила «dano.txt»
Задание А:
Точка 1.
Координата по оси X:
5119.94
Координата по оси Y:
6157.33
Точка 2.
Координата по оси X:
7182.27
Координата по оси Y:
4976.39
Задание B:
Точка 1.
Координата по оси X:
10932.84
Координата по оси Y:
6112.26
Точка 2.
Координата по оси X:
9115.24
Координата по оси Y:
4903.68
Рис.1.3 Результаты в Turbo Pascal.
Содержание фаила «rezultat.txt»:
Приращения для задания А
По оси X
2062.33
По оси Y
-1180.94
Приращения для задания B
По оси X
-1817.60
По оси Y
-1208.58
Румб для задания А
0.520047
Румб для задания А
0.586801
Дирекционный угол и четверть для задания А:
IV четверть
Дирекционный угол равен(в радианах):
5.763
Дирекционный угол и четверть для задания B:
III четверть
Дирекционный угол равен(в радианах):
3.728
Горизонтальное расстояние между точками равно(для задания А):
2376.52
Горизонтальное расстояние между точками равно(для задания B):
2182.74
Дирекционный угол равен(для задания А):
330 градусов 12 минут 12 секунд
Дирекционный угол равен(для задания B):
213 градусов 37 минут 16 секунд
1.8 Табличные вычисления MS Excel