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

Движение по лабиринту: Определить и вывести на экран кратчайшее расстояние

10.03.2015, 19:27. Показов 3105. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача:
Задано поле МхN клеток, в которых расположены нули и единицы.Его называют лабиринтом, а единицы стенами.Необходимо определить и вывести на экран кратчайшее расстояние из клетки (x, y) в клетку (Х1, У1).
(Программу описать ввиде списков).
Прошу помощи очень нужно,полазил по похожим темам,толковой и четкой информации не нашел.Тему со списками пропустил,теперь мучаюсь.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.03.2015, 19:27
Ответы с готовыми решениями:

Движение по лабиринту: Определить и вывести на экран кратчайшее расстояние
Задание: Задано поле МхN клеток, в которых расположены нули и единицы.Его называют лабиринтом, а единицы стенами.Необходимо определить и...

Вывести кратчайшее расстояние
Привет! Помогите написать код: На поверхности прямоугольного параллелепипеда сидит муха и нанесена капля варенья. Определите...

Определить кратчайшее расстояние от исходной точки до конечной
Здравствуйте, помогите пожалуйста решить задачу. Путник прошел на север X км, затем повернул на запад и прошел Y км, затем повернул на...

20
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8655 / 4490 / 1669
Регистрация: 01.02.2015
Сообщений: 13,898
Записей в блоге: 12
10.03.2015, 19:58
В общих чертах - волновой "алгоритм Ли" (именно так в Wikipedia) - разновидность поиска в ширину. А очередь организовать в виде списка.
0
0 / 0 / 0
Регистрация: 10.03.2015
Сообщений: 21
Записей в блоге: 1
10.03.2015, 20:10  [ТС]
Мне бы текст программы,а то я пропустил эти темы и теперь не знаю что и как делать
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8655 / 4490 / 1669
Регистрация: 01.02.2015
Сообщений: 13,898
Записей в блоге: 12
11.03.2015, 00:52
Лучший ответ Сообщение было отмечено sanyok zadrot как решение

Решение

Ограничения:
1. Компилятор FPC, может быть PascalABC.NET - у ТС нет указания на этот счёт.
2. Условие вводится из файла определённого формата.
3. Безошибочность чтения из файла не контролируется.
4. Может быть, вывод пути нужно было тоже через списки (стек), но у меня уже нет сил и желания.
5. Алгоритм Ли не совсем чисто реализован (в Wikipedia он через цикл repeat-until, а у меня через while), запись номера волны в матрицу D через очередь работает правильно, но можно было бы и напрямую, кажется, в нескольких местах дублируются проверки.
6. Вывод пути организован так: построчно выводятся координаты клеток от начальной до конечной.
7. Координаты клеток считаются от 0, а не от 1.
8. Строки для удобства отладки (особенно динамических структур) можно убрать
Pascal
1
2
3
uses
  HeapTrc,
  LineInfo;
9. Алгоритм Ли и восстановление пути разделены на две процедуры. Связываются они матрицей D.
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
program Maze_Lee_3;
 
uses
  HeapTrc,
  LineInfo;
 
type
 
  TInfo = record
    X, Y, N: integer;
  end;
{
**************************************************************
Реализация очереди на динамических списках
**************************************************************
}
  PQueueElement = ^TQueueElement;
 
  TQueueElement = record
    Info: TInfo;
    Next: PQueueElement;
  end;
 
  TQueueRoot = record
    First, Last: PQueueElement;
  end;
 
  procedure QueueInit(var root: TQueueRoot);
  begin
    root.First := nil;
    root.Last  := nil;
  end;
 
  procedure QueuePush(var root: TQueueRoot; info: TInfo);
  var
    p: PQueueElement;
  begin
    new(p);
    p^.Info := info;
    p^.Next := nil;
    if Assigned(root.Last) then
    begin
      root.Last^.Next := p;
    end
    else
    begin
      root.First := p;
    end;
    root.Last := p;
  end;
 
  procedure QueuePop(var root: TQueueRoot; var info: TInfo);
  var
    p: PQueueElement;
  begin
    if not Assigned(root.Last) then
    begin
      exit;
    end;
    info := root.First^.Info;
    p := root.First;
    if root.First <> root.Last then
    begin
      root.First := root.First^.Next;
    end
    else
    begin
      root.First := nil;
      root.Last  := nil;
    end;
    dispose(p);
  end;
 
  function QueueIsEmpty(root: TQueueRoot): boolean;
  begin
    QueueIsEmpty := (root.First = nil);
  end;
 
  procedure QueueFree(var root: TQueueRoot);
  var
    p, q: PQueueElement;
  begin
    p := root.First;
    while Assigned(p) do
    begin
      q := p;
      p := p^.Next;
      Dispose(q);
    end;
    QueueInit(root);
  end;
 
  procedure QueuePushXYN(var root: TQueueRoot; x, y, n: integer);
  var
    info: TInfo;
  begin
    info.X := x;
    info.Y := y;
    info.N := n;
    QueuePush(root, info);
  end;
 
  procedure QueuePopXYN(var root: TQueueRoot; var x, y, n: integer);
  var
    info: TInfo;
  begin
    QueuePop(root, info);
    x := info.X;
    y := info.Y;
    n := info.N;
  end;
 
{
**************************************************************
Реализация алгоритма Ли (волнового алгоритма)
**************************************************************
}
const
  BLANK = 0;
  WALL  = 1;
type
  TMaze = array of array of integer;
 
  procedure LeeAlgorithm(m, n: integer; const Maze: TMaze; var D: TMaze;
    Xs, Ys, Xf, Yf: integer);
  var
    Queue: TQueueRoot;
    x, y, WaveNum: integer;
 
    procedure TestCell(x, y, WaveNum: integer);
    begin
      if (x >= 0) and (x < m) and (y >= 0) and (y < n) then
        if (Maze[x, y] = BLANK) and (D[x, y] = 0) then
        begin
          QueuePushXYN(Queue, x, y, WaveNum);
        end;
    end;
 
  begin
    for x := 0 to m - 1 do
      for y := 0 to n - 1 do
        D[x, y] := 0;
    if not ((Xs >= 0) and (Xs < m) and (Ys >= 0) and (Ys < n)) then
      exit;
    if Maze[Xs, Ys] = WALL then
      exit;
    QueueInit(Queue);
    QueuePushXYN(Queue, Xs, Ys, 1);
    while not QueueIsEmpty(Queue) do
    begin
      QueuePopXYN(Queue, x, y, WaveNum);
      if (Maze[x, y] = BLANK) and (D[x, y] = 0) then
      begin
        D[x, y] := WaveNum;
        if (x = Xf - 1) and (y = Yf - 1) then
          break;
        TestCell(x - 1, y, WaveNum + 1);
        TestCell(x + 1, y, WaveNum + 1);
        TestCell(x, y - 1, WaveNum + 1);
        TestCell(x, y + 1, WaveNum + 1);
      end;
    end;
    QueueFree(Queue);
  end;
 
  procedure ShowPath(m, n: integer; const D: TMaze; Xs, Ys, Xf, Yf: integer);
  var
    Px, Py: array of integer;
    Distance, x, y, i: integer;
 
    procedure TestCell(xx, yy: integer);
    begin
      if (xx >= 0) and (xx < m) and (yy >= 0) and (yy < n) then
        if D[xx, yy] = Distance then
        begin
          x := xx;
          y := yy;
        end;
    end;
 
  begin
    if not ((Xf >= 0) and (Xf < m) and (Yf >= 0) and (Yf < n)) then
    begin
      writeln('There is not exist a path from (', Xs, ', ', Ys, ') to (', Xf,
        ', ', Yf, ').');
      exit;
    end;
    Distance := D[Xf, Yf];
    if Distance = 0 then
    begin
      writeln('There is not exist a path from (', Xs, ', ', Ys, ') to (', Xf,
        ', ', Yf, ').');
      exit;
    end;
    SetLength(Px, Distance);
    SetLength(Py, Distance);
    x := Xf;
    y := Yf;
    repeat
      Dec(Distance);
      Px[Distance] := x;
      Py[Distance] := y;
      if Distance = 0 then
        break;
      TestCell(x - 1, y);
      TestCell(x + 1, y);
      TestCell(x, y - 1);
      TestCell(x, y + 1);
    until False;
    Distance := D[Xf, Yf];
    writeln('There is exist a path from (', Xs, ', ', Ys, ') to (', Xf, ', ', Yf, ').');
    for i := 0 to Distance - 1 do
      writeln(succ(i): 2, '. (', Px[i], ', ', Py[i], ')');
  end;
 
{
**************************************************************
Чтение из файла лабиринта, начальной и конечной точек
**************************************************************
}
const
  BLANK_CHAR = '0';
  WALL_CHAR  = '1';
 
  procedure MazeLoadFromFile(var a: TMaze; var m, n, Xs, Ys, Xf, Yf: integer;
    sFileName: string);
  var
    x, y: integer;
    s: string;
    f: TextFile;
  begin
    m := 0;
    n := 0;
    Assign(f, sFileName);
    Reset(f);
    readln(f, m, n);
    SetLength(a, m, n);
    for x := 0 to m - 1 do
    begin
      readln(f, s);
      for y := 0 to n - 1 do
      begin
        if s[y + 1] = BLANK_CHAR then
          a[x, y] := BLANK
        else
          a[x, y] := WALL;
      end;
    end;
    readln(f, Xs, Ys);
    readln(f, Xf, Yf);
    Close(f);
  end;
 
var
  m, n: integer;
  Maze: TMaze;
  Xs, Ys, Xf, Yf: integer; {начальная и конечная клетки лабиринта}
  D: TMaze; {матрица расстояний от (Xs,Ys)}
begin
  MazeLoadFromFile(Maze, m, n, Xs, Ys, Xf, Yf, 'Maze01.txt');
  if m = 0 then
    exit;
  SetLength(D, m, n);
  LeeAlgorithm(m, n, Maze, D, Xs, Ys, Xf, Yf);
  ShowPath(m, n, D, Xs, Ys, Xf, Yf);
end.
Файл условия в формате
m n - размеры лабиринта
лабиринт
начальная клетка (отсчёт от 0)
конечная клетка (отсчёт от 0)

Пример:
15 10
1111111111
1000000100
1011100101
1010101101
1010100001
1010111111
1000010001
1111001111
1001101001
1000001101
1110100001
1010100111
1010110101
1000000001
1111111111
11 1
1 9
1
0 / 0 / 0
Регистрация: 10.03.2015
Сообщений: 21
Записей в блоге: 1
11.03.2015, 17:15  [ТС]
Огромнейшее спасибо,очень выручил,завтра покажу преподу,что он скажет.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8655 / 4490 / 1669
Регистрация: 01.02.2015
Сообщений: 13,898
Записей в блоге: 12
11.03.2015, 21:06
Надеюсь, что ты сможешь рассказать об алгоритме Ли. А также, при необходимости, изменить форматы и способы ввода, вывода.
2
0 / 0 / 0
Регистрация: 10.03.2015
Сообщений: 21
Записей в блоге: 1
14.03.2015, 21:31  [ТС]
Я заболел,так и не показал преподу прогу,не могу понять как забиваються данные и в какой файл? Напиши инструкцию пожалуйста если не трудно
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8655 / 4490 / 1669
Регистрация: 01.02.2015
Сообщений: 13,898
Записей в блоге: 12
14.03.2015, 22:19
В блокноте (или другом текстовом редакторе - не в Word) создаётся текстовый (plain text) файл с именем 'Maze01.txt' следующего формата:
- в первой строке указаны два числа - размеры лабиринта m и n, где m - количество строк, n - количество столбцов.
- далее идут m строк с описанием лабиринта, где 0 - проход, 1 - стена
- далее идет строка с координатами стартовой клетки (сначала номер строки, потом номер столбца), причём отсчёт производится от нуля.
- далее едёт строка с координатами последней клетки (куда надо прийти).
Так, например, в файле следующего содержания
15 10
1111111111
1000000100
1011100101
1010101101
1010100001
1010111111
1000010001
1111001111
1001101001
1000001101
1110100001
1010100111
1010110101
1000000001
1111011111
11 1
1 9
описан лабиринт a[0..15-1, 0..10-1] и приведены координаты двух клеток - начальной (11,1) и конечной (1,9). Ниже, приведу на схеме расположение начальной (S) и конечной (F) клеток
1111111111
100000010F
1011100101
1010101101
1010100001
1010111111
1000010001
1111001111
1001101001
1000001101
1110100001
1S10100111
1010110101
1000000001
1111111111
Из файла удобно брать данные такого объёма при отладке. Но если есть острое желание, можещь переделать на ввод с клавиатуры.

Добавлено через 7 минут
Этот файл должен находится в той же папке, что и exeшник.

Добавлено через 3 минуты
Странно... Я думал, что перед "спасибой" ты проверил работоспособность кода...
1
0 / 0 / 0
Регистрация: 10.03.2015
Сообщений: 21
Записей в блоге: 1
14.03.2015, 22:45  [ТС]
я проверял,тот же трабл был и вот решился написать
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8655 / 4490 / 1669
Регистрация: 01.02.2015
Сообщений: 13,898
Записей в блоге: 12
14.03.2015, 23:16
Какой "трабл"?
0
0 / 0 / 0
Регистрация: 10.03.2015
Сообщений: 21
Записей в блоге: 1
14.03.2015, 23:18  [ТС]
с вводом,не хотело читать из файла
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8655 / 4490 / 1669
Регистрация: 01.02.2015
Сообщений: 13,898
Записей в блоге: 12
14.03.2015, 23:32
А сейчас?
У меня исходник и файл 'Maze01.txt' находятся в одной папке. При запуске fp в этой же папке появляется exe.
Приложу свой файл.
А кроме того, что "не хотело", выдавало код ошибки. Что за ошибка - файл не найден или ошибка при чтении?
Вложения
Тип файла: zip Maze.zip (2.3 Кб, 10 просмотров)
1
0 / 0 / 0
Регистрация: 10.03.2015
Сообщений: 21
Записей в блоге: 1
14.03.2015, 23:52  [ТС]
Тот код что ты кидал всеровно ошибку,компилируеться нормально при запуске "exit code 2" вот скрины (ссылка на сторонний ресурс удалена, контент загружен на форум, фотографии текста заменены текстом)

Code
Runtime error 2 at $004023E8
  $004023E8  MAZELOADFROMFILE,  line 235
...
$004027E8  main,  line 260 of
...
$0040A3A1
Добавлено через 4 минуты
А вот из твоего архива прога скомпилировалась, запустилась и выдало это (ссылка на сторонний ресурс удалена, контент загружен на форум, фотография текста заменена текстом)

Code
20. (4, 1)
21. (3, 1)
22. (2, 1)
23. (1, 1)
24. (1, 2)
25. (1, 3)
26. (1, 4)
27. (1, 5)
28. (2, 5)
29. (3, 5)
30. (4, 5)
31. (4, 6)
32. (4, 7)
33. (4, 8)
34. (3, 8)
35. (2, 8)
36. (1, 8)
37. (1, 9)
Heap dump by heaptrc unit
132 memory block allocated : 1776/1904
132 memory block freed     : 1776/1904
0 unfreed memory blocks : 0
True heap size : 163840 (112 used in System startup)
True free heap : 163728
Добавлено через 1 минуту
не знаю правда что это означает
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8655 / 4490 / 1669
Регистрация: 01.02.2015
Сообщений: 13,898
Записей в блоге: 12
15.03.2015, 00:12
2 File not found Reported when trying to erase, rename or open a non-existent file.
А какой компилятор, как ты его запускаешь, где появляется exe, где находятся pas и txt?

Добавлено через 1 минуту
Ну тот, что последний рисунок - это путь из 37 шагов. Измени формат вывода так, чтобы выводил в одну строку.

Добавлено через 17 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
    while not QueueIsEmpty(Stack) do
    begin
      QueuePopXY(Stack, x, y);
      Inc(i);
      //      writeln(i: 2, '. (', x, ', ', y, ')');
      Write(' (', x, ', ', y, ')');
      if (x <> Xf) or (y <> Yf) then
        Write(' ->');
      if i mod 5 = 0 then
        writeln;
    end;
    writeln;
0
0 / 0 / 0
Регистрация: 10.03.2015
Сообщений: 21
Записей в блоге: 1
15.03.2015, 00:18  [ТС]
Я закинул, твою прогу и текст.файл в отдельную папку, а эту папку в папку бин фри паскаля,открываю его запускаю через него,компилирует нормально,нажимаю ран,выбивает ексит код 2 и при нажатии альт+ф5 выдает те ошибки что скинул(но это именно с тем кодом что ты кидал выше) а тот последний скрин то уже с того втвоего архива,так же розархивировал в бин,в отдельную папку и также запускал,там снизу чет за память написано,на скрине снизу видно или это ничего страшногО?

Добавлено через 59 секунд
А это выдает просто проходимый путь или найкратчяйший проходимый?

Добавлено через 2 минуты
Мне еще будет нужна твоя помощь,дай свои контакты мб в вк или скайп,мыло,что нибудь,это просто прога на курсовую,и мне еще нужно будет немножко эту прогу доработать а я в этом паскале воще не шарю,пол учебного года проболел,уже на с++ пришел,что то начал вдуплять
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8655 / 4490 / 1669
Регистрация: 01.02.2015
Сообщений: 13,898
Записей в блоге: 12
15.03.2015, 00:21
Алгоритм Ли даёт кратчайший проходимый.
Эти надписи
Heap dump by heaptrc unit
132 memory blocks allocated : 1776/1904
132 memory blocks freed : 1776/1904
0 unfreed memory blocks : 0
True heap size : 131072 (96 used in System startup)
True free heap : 130976
Дают отладочные модули из uses. Удали их - они нужны для отладки. HeapTrc даёт возможность увидеть, что память, выделенная динамическим структурам, к концу программы полностью освобождена - программа корректна.
1
0 / 0 / 0
Регистрация: 10.03.2015
Сообщений: 21
Записей в блоге: 1
15.03.2015, 00:32  [ТС]
ок ,я спать если чет будет не понятно отпишу

Добавлено через 10 секунд
спасибо
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8655 / 4490 / 1669
Регистрация: 01.02.2015
Сообщений: 13,898
Записей в блоге: 12
15.03.2015, 01:06
У меня нет ни скайпа, ни fb, ни QIP, ни одноклассников - не было нужды. Мыло давать - нет смысла. Сейчас до понедельника у меня есть свободное время, а дальше - до конца месяца - уже может и не быть.

Тебе лучше разобраться, как оно работает. Алгоритм Ли описан в Wikipedia, динамические структуры - в учебниках всех языков (и Pascal и C++). Сколько я представляю, C и C++ это работа сплошь с указателями и указателями на указатели.
Если бы ты искал описание алгоритма, то в Wikipedia в самом низу есть ссылка на готовый код алгоритма Ли на C++ и Pascal. Кстати, именно оттуда структура файла с лабиринтом. Кроме Wiki описание, визуализация, примеры есть во многих других местах.

Вопросы можно задавать на форуме. А лучше преподавателю - он будет видеть работу.
Болезнь - не повод для незнания, придётся навёрстывать.

Кроме того, это твой курсовой.
1
0 / 0 / 0
Регистрация: 10.03.2015
Сообщений: 21
Записей в блоге: 1
15.03.2015, 16:21  [ТС]
Мне еще нужно твоя помощь в доработке этой проги по таким пунктамменюшку сделать)
а)что бы можна было вводить лабиринт и розмерность непосредственно в самой программе и ситывание с файла,сделать сто бы пользователь мог сам выбирать или с файла или сам вводить
б)и так же результат выводить за выбором или на екран или в текстовий файл
Помоги сделать менюшку,а то я воще беспонятия как на этом паскале сделать,выручи пожалуйста,доделай прогу,буду весьма блогадарен
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8655 / 4490 / 1669
Регистрация: 01.02.2015
Сообщений: 13,898
Записей в блоге: 12
15.03.2015, 19:33
Попробуй самостоятельно. Напомню, что это твоя курсовая.
Приведу ссылки на образцы.
1. Ввод матрицы пример - пункт 4.
2. Запись в текстовый файл - добавь копию процедуры ShowPath, но вывод отправь в файл. Или попробуй сделать перенаправление вывода
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  основная программа
  if (в файл) then   {если нужно отправить в файл - то перенаправляем вывод в файл}
  begin
    Assign(output, 'ShowPath.txt'); {<--- или другое имя}
    Rewrite(output);
  end
  else
    ClrScr;             {если не требуется вывод в файл - очищаем экран}
  ShowPath(...);    {процудура вывода пути}
  if (в файл) then  {восстанавливаем вывод на экран}
  begin
    Close(output);
    AssignCRT(output); {<--- это если подключать модуль CRT}
      или
    Assign(output, '');   {<--- это если НЕ подключать модуль CRT}
    Rewrite(output);
  end;
3. Организация меню - пример.

Паскаль не сложнее других языков. Где-то даже проще. У кого-то в подписи видел справедливое замечание: "Опытный программист на С/С++ с лёгкостью исправляет ошибки, которые на Pascal даже не возникают".

Достаточно непростую часть курсовика я за тебя уже сделал. Тебе остаётся написать (скопировать из примера и доработать) пользовательский интерфейс (организация меню), 15 строк процедуры ввода с клавиатуры, 15 строк скопировать перенаправление вывода в файл.

Будут вопросы - помогу. Но делать за тебя не буду. Почему сделал алгоритм - было интересно и у меня уже год, как нет работ по программированию PLC, скучаю, чтобы не забыть.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.03.2015, 19:33
Помогаю со студенческими работами здесь

Вывести на экран кратчайшее слово в тексте
Пользователь вводит предложение, программа находит самое короткое слово и выводит его на экран Без #include&lt;sstream&gt; Добавлено...

Определить кратчайшее расстояние от заданной точки до границы заданной фигуры
Определить кратчайшее расстояние от заданной точки до границы заданной фигуры, если точка находится внутри фигуры, иначе вывести...

Лабиринт: определить и вывести на экран самое короткое расстояние от входа к выходу
Дано поле размером M*N 1 стена 0 проходы . Надо определить и вывести на экран самое короткое расстояние от входа к выход Добавлено...

Определить кратчайшее расстояние от заданной точки до границы заданной фигуры, считая, что точка находится вне
Определить кратчайшее расстояние от заданной точки до границы заданной фигуры, считая, что точка находится вне

кратчайшее расстояние до плоскости
Всем здравствуйте. У меня есть такая задача,не могу математически доказать (объяснить) почему именно так. Есть ромб ABCD,его диагонали...


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

Или воспользуйтесь поиском по форуму:
20
Закрытая тема Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru