Обратная Геодезическая задача в Pascal

Pascal

Недавно столкнулась с проблемой написания Обратной Геодезической задачи в Pascal. Точнее не то, чтобы недавно.. И даже не случайно. Я давно была на пути написания этой зачачи в Pascal, всё потому, что я соня. Какая бы не была погода и время года, первая пара для меня – заслуженный сон. А если я вдруг просыпаюсь, то это что-то невероятное и скорее неправда.


Так вот. В интернете легко найти прожку написанную в Delphi. Моя программа, написанная в Pascal, практически ничем не уступает. Только более простым интерфейсом.

Всего у меня получилось три варианта. Первый не учитывает угол 0 градусов. Второй учитывает. А третий, в отличии от двух предыдущих, считает не просто в грудусах, а подразделяет их на градусы, минуты и секунды.


Первый вариант

var
xa,ya,xb,yb,x,y,
s,r:real;
begin
writeln(‘Vvedite koordinaty tochki A’);
write(‘X=’);
readln(xa);
write(‘y=’);
readln(ya);
writeln(‘Vvedite koordinaty tochki B’);
write(‘X=’);
readln(xb);
write(‘y=’);
readln(yb);
x:=xb-xa;
y:=yb-ya;
s:=sqrt(sqr(x)+sqr(y));
writeln(‘Rasstoyanie ravno ‘,s:3:3);
r:=arctan( abs((y)/(x)) );
r:=r*180/pi;
if (x>0)and(y>0) then writeln(‘Ugol raven ‘,r:3:3);
if (x<0)and(y>0) then writeln(‘Ugol raven ‘,180-r:3:3);
if (x<0)and(y<0) then writeln('Ugol raven ',180+r:3:3);
if (x>0)and(y<0) then writeln('Ugol raven ',360-r:3:3);
readln;
end.



Второй вариант

var
xa,ya,xb,yb,x,y,
s,r:real;
begin
writeln(‘Vvedite koordinaty tochki A’);
write(‘X=’);
readln(xa);
write(‘Y=’);
readln(ya);
writeln(‘Vvedite koordinaty tochki B’);
write(‘X=’);
readln(xb);
write(‘Y=’);
readln(yb);
x:=xb-xa;
y:=yb-ya;
s:=sqrt(sqr(x)+sqr(y));
writeln(‘Rasstoyanie ravno ‘,s:3:3);
r:=arctan( abs((y)/(x)) );
r:=r*180/pi;
if (x>0)and(y>0) then writeln(‘Ugol raven ‘,r:3:3);
if (x<0)and(y>0) then writeln(‘Ugol raven ‘,180-r:3:3);
if (x<0)and(y<0) then writeln('Ugol raven ',180+r:3:3);
if (x>0)and(y<0) then writeln('Ugol raven ',360-r:3:3);
if y=0 then writeln ('Ugol raven 0 ');
readln;
end.



Третий вариант

var
Grad,Min,Sec,xa,ya,xb,yb,x,y,s,r:real;
begin
writeln(‘Vvedite koordinaty tochki A’);
write(‘X=’);
readln(xa);
write(‘Y=’);
readln(ya);
writeln(‘Vvedite koordinaty tochki B’);
write(‘X=’);
readln(xb);
write(‘Y=’);
readln(yb);
x:=xb-xa;
y:=yb-ya;
s:=sqrt(sqr(x)+sqr(y));
writeln(‘Rasstoyanie ravno ‘,s:3:3);
r:=arctan( abs((y)/(x)) );
r:=r*180/pi;
Grad:=int(r);
Min:=int(frac(r)*60);
Sec:=frac(frac(r)*60);
if (x>0)and(y>0) then writeln(‘Ugol raven ‘,Grad:3:0,’gr ‘,Min:3:0,’min ‘,Sec:3:1,’sec’);
if (x<0)and(y>0) then writeln(‘Ugol raven ‘,179-Grad:3:0,’gr ‘,60-Min:3:0,’min ‘,Sec:3:1,’sec’);
if (x<0)and(y<0) then writeln('Ugol raven ',180+Grad:3:0,'gr ',Min:3:0,'min ',Sec:3:1,'sec');
if (x>0)and(y<0) then writeln('Ugol raven ',359-Grad:3:0,'gr ',60-Min:3:0,'min ',Sec:3:1,'sec');
if y=0 then writeln ('Ugol raven 0 ');
readln;
end.



Мне эта задача помогла сдать зачёт ;)


***

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

Комментарии (3) на запись “Обратная Геодезическая задача в Pascal”

  1. Пишет:

    Паскаль))) Лучше на сишке писать)) Удобнее ;)

  2. Аня Колмычек Пишет:

    Сказали бы на Си написать – написала бы на Си. =)

  3. Анон Пишет:

    И все бы ничего, но вот для момента, когда координаты по икс или игрек равны – прога робить не будет, а такое может быть.
    Надеюсь, ты с геодезией не связана никак, а то убьешь еще кого-нибудь ненароком.
    Хотя год уже прошел.И кому это я пытаюсь объяснить?

Оставьте свое мнение

 

Я не робот.