Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 42

Модуль

17.12.2019, 23:37. Показов 603. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Дали задание:
Составить модуль подпрограмм, которые выполняют:

· Перевод в десятичные доли градусов. Перевод в радианы;

· Выполнение прямой геодезической задачи;

· Нахождение координат конечной точки линии;

· Нахождение горизонтальногопроложения;

· Приращение координат;

· Нахождение дирекционного угла;

· Выполнение обратной геодезической задачи;

· Нахождение румба;

· Приращение х;

· Приращение у;

· Перевод израдиан в градусы, минуты, секунды;

Так вот, написал я модуль, однако он выделывается. Ошибку укажу в листинге. Приложу так же, обратную и прямую геодезическую задачу. Нужна помощь, так как совсем не знаю, что делать.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
unit geodesy;
interface
var
Xa,Ya,Deg,radi,rad,Sa,min,sec,Sab,Xb,Yb,dx,dy:real;
function getAngl(Deg,min,sec:real):real;
function getx(rad,Sa,Xa:real):real;
function gety(rad,Sa,Ya:real):real;
function chetvert(dx,dy,r:real):real;
function deltaA(dx,dy:real):real;
function minusx(Xa,Xb:real):real;
function minusy(Ya,Yb:real):real;
procedure perevod(radi:real);
implementation
function getAngl(Deg,min,sec:real):real;
begin
result:=(Deg+(min/60)+(sec/3600));
result:=result/180*Pi;
end;
function getx(rad,Sa,Ya:real):real;
var
gettx:real;
begin
gettx:=Sa*cos(rad);
result:=gettx+Xa;
end;
function gety(rad,Sa,Ya:real):real;
var
getty:real;
begin
getty:=Sa*sin(rad);
result:=getty+Ya;
end;
function chetvert(dx,dy,r:real):real;
begin
if (dx=0) and (dy=0) then exit;
if (dy>0) and (dx=0) then
result:= Pi/2;
if (dy<0) and (dx=0) then
result:= 3*Pi/2
else
begin
r:=arctan (dy/dx);
if (dy>=0) and (dx>0) then
r:=r;
if (dy>=0) and (dx<0) then
r:=pi-r;
if (dy<0) and (dx<0) then
r:=pi+r;
if (dy<0) and (dx>0 ) then
r:=2*pi-r;
result:=true            //ошибка тут. Если ставить ; она не исчезает, если убрать строку в целом, пишет уже другую ошибку
end;
end;
procedure perevod(radi:real; var gr,mn,sc:real);
var
Deg,min,sec:real;
begin
Deg:=radi*180/Pi;
gr:=trunc(Deg);
min:=(Deg-gr)*60;
mn:=trunc(min);
sec:=(min-mn)*60;
sc:=trunc(sec);
end;
function minusx(Xa,Xb:real):real;
begin
result:=Xb-Xa;
end;
function minusy(Ya,Yb:real):real;
begin
result:=Yb-Ya;
end;
function deltaA(dx,dy:real):real;
begin
result:=sqrt(sqr(dx)+sqr(dy));
end;
end.
Листинг обратной и прямой геодезической задачи:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//Решение прямой геодезической задачи:
 
Program1;
usescrt;
var
grad, min, sec, rad: real;
Begin
write('Введите координаты Х точкиA = '); Readln(Xa);
write('Введите координаты Y точкиA = '); Readln(Ya);
repeat
Writeln('Ввод градусов:');
Readln(grad);
Writeln('Ввод минут:');
Readln(min); 
Writeln('Ввод секунд:');
Readln(sec);
until (grad<=360) and (min<=60) and (sec<=60) and (grad>=0) and (min>=0) and (sec>=0);
rad:= getangle( grad,min,sec);
writeln('Угол в радианах: ',rad:9:7);
write('Введите горизонтальное проложение AB = '); Readln(Sa);
Xb:=getx(rad,Sa,Xa);
Yb:=gety(rad,Sa,Ya);
writeln('Координаты точки B:', ' X=',Xb:9:7, ' Y=',Yb:9:7);
end.
         }
//Решение обратной геодезической задачи:
Program ss;
uses crt;
Label L;
var
Xa,Ya,rumb,min,sec,Sa,radi,Xb,Yb,r,g,m,s: real;
Begin
writeln('Введите координаты точек');
write('xa=');
readln(xa);
write('ya=');
readln(ya);
write('xb=');
readln(xb);
write('yb=');
readln(yb);
gettx:=getdx(Xa,Xb);
getty:=getdy(Ya,Yb);
if chetvert(dx,dy,r) then radi:=R
else
begin
writeln (‘Ошибка’);
goto L;
writeln('Дирекционный угол в радианах: ',radi:8:6);
perevod(radi,g,m,s);
writeln('Дирекционный угол: ',g:3:0,'градуса(ов)',m:2:0,'минут(ы) ',s:2:0,'секунд(ы) ');
Sa:=deltaA(dx, dy);
writeln('Горизонтальное проложение: ',Sa:8:6);
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.12.2019, 23:37
Ответы с готовыми решениями:

модуль
Написать в типиз. файл записи об детской одежде: наименование, цена,страна-производитель.Написать программу функции подсчета...

модуль
вобщем необходимо написать программу где проигрывается песня маленькой елочке,я ее написала,но так же надо чтобы во время ее...

Модуль
Ребята как здесь исправить ошибку??Путь прописать...как? Unit obj; Interface uses crt,graph; procedure summ; Procedure...

3
2374 / 776 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
18.12.2019, 00:27
nebula_, вы делаете просто детские ошибки!
Вот ваша функция.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function chetvert(dx,dy,r:real):real;
begin
  if (dx = 0) and (dy = 0) then
    exit;
  if (dy > 0) and (dx = 0) then
    result:= Pi/2;
  if (dy < 0) and (dx = 0) then
    result:= 3*Pi/2
  else
    begin
      r:= arctan (dy/dx);
      if (dy >= 0) and (dx > 0) then
        r:= r;
      if (dy >= 0) and (dx < 0) then
        r:= pi-r;
      if (dy < 0) and (dx < 0) then
        r:= pi+r;
      if (dy < 0) and (dx > 0 ) then
        r:= 2*pi-r;
      result:= true;            //ошибка тут. Если ставить ; она не исчезает, если убрать строку в целом, пишет уже другую ошибку
    end;
end;
Значение которое она возвращает типизировано как real, но вы в строке
result:= true; заставляете ее быть boolean. Конечно же компилятор на вас обиделся и начал ругаться.
Определитесь в этой функции, что является у вас логическим выходом, а что возвращает значения в типе Real.
Result:= это эквивалент записи chetvert:=
0
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 42
19.12.2019, 01:07  [ТС]
Можете подсказать, что нужно сделать? т.к. прочитав все это, все равно не понял, как сделать так, чтобы заработало. Прошу помочь только в модуле.
0
2374 / 776 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
19.12.2019, 01:43
Очень трудно помочь, потому что не знаю того алгоритма, и формул, по которым все это работает.
Но у вас серьезные проблемы с функцией chetvert(dx,dy,r:real):real; Потому что не понятна ее роль, половина функции возвращает числа, а другая половина возвращает логическое значение.
Я не понимаю логики работы этой функции. Возможно в ней вообще никакой логики нет, вы ее просто склеили из кусков.
Попробуйте такой код этой функции.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function chetvert(dx,dy:real; var r:real): boolean;
begin
  if (dx = 0) and (dy = 0) then
    exit;
  if (dy > 0) and (dx = 0) then
    r:= Pi/2;
  if (dy < 0) and (dx = 0) then
    r:= 3*Pi/2
  else
    begin
      r:= arctan (dy/dx);
      if (dy >= 0) and (dx > 0) then
        r:= r;
      if (dy >= 0) and (dx < 0) then
        r:= pi-r;
      if (dy < 0) and (dx < 0) then
        r:= pi+r;
      if (dy < 0) and (dx > 0 ) then
        r:= 2*pi-r;
      result:= true;      
    end;
end;
Не проверял. Не компилировал.
Также нужно поправить функцию в разделе interface
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.12.2019, 01:43
Помогаю со студенческими работами здесь

Модуль
народ напешите мне пожалуйста простой пример модуля!

модуль
помогите найти ошибку uses vod, sredne; const n=5; k=5; type ned=record {рабочие дни} chs:byte; ...

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

Модуль
Создать модуль, выводящий таблицу умножения, таблицу квадратов чисел.

Модуль
Не буду создавать новую тему, спрошу тут В одной программе есть процедура и надо из этой процедуры сделать отдельный модуль Как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru