Смекни!
smekni.com

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

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

(1.3)

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

(1.4)

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

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


;

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

;

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

;

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

;

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

.

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

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

Даны координаты 2-х точек A(х,y) и B(x,y). Определить дирекционный угол прямой AB.

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

Вариант 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.7 Результаты программы

Рис.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