Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Робот

Автор: Pautina 24.05.2007 20:32

1. Получить аналитическую модель (выражение в виде формулы) решения приведенной ниже задачи.
2. Получить компьютерную модель решения этой же задачи на основе программной имитации действий робота. Результаты решения должны совпадать с теми, которые получены в п.1
3. Сделать выводы о достоинствах и недостатках двух видов моделей.
Задача: робот-минер способен провести разминирование местности, план которой должен быть представлен в виде прямоугольника с целыми длинами сторон (n – высота, m – длина). Перед началом работы робот размещают перед левой верхней клеткой прямоугольника в направлении «слева – направо», после чего робот начинает обход и разминирование, двигаясь по часовой стрелке по спирали. При этом спираль постепенно закручивается вовнутрь. Разминирование заканчивается, когда проверены все клетки.
Требуется составить 2 вида моделей, которые для задаваемых исходных данных (m и n) определяют количество поворотов, которые должен сделать робот в процессе разминирования.


Ниже приведен текст программы, но что-то не работает. Может, кто-нибудь сможет помочь! Очень вас прошу! Заранее спасибо!


Прикрепленные файлы
Прикрепленный файл  ROBOT.PAS ( 1.5 килобайт ) Кол-во скачиваний: 290

Автор: klem4 24.05.2007 21:07

Цитата
Требуется составить 2 вида моделей, которые для задаваемых исходных данных (m и n) определяют количество поворотов, которые должен сделать робот в процессе разминирования.


Чем модели то отличаются ?

ps А вообще помоему обычный обход матрицы по спирали, поищи на форуме выкладывалось.

Автор: Pautina 24.05.2007 21:35

Есть исходник обхода матрицы по спирали. Как сделать, чтобы обход начинался не с центра, а с верхнего левого угла? и чтобы велся подсчет поворотов?


Прикрепленные файлы
Прикрепленный файл  Z3.PAS ( 2.48 килобайт ) Кол-во скачиваний: 282

Автор: Ozzя 25.05.2007 11:30

Цитата
с верхнего левого угла?

А в http://forum.pascal.net.ru/index.php?s=&showtopic=2694&view=findpost&p=27640 заглянуть?
unsure.gif

Автор: Pautina 26.05.2007 14:12

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


Прикрепленные файлы
Прикрепленный файл  rob.pas ( 956 байт ) Кол-во скачиваний: 242

Автор: Pautina 27.05.2007 19:31

Никак не получается! Помогите, пожалуйста!


Прикрепленные файлы
Прикрепленный файл  ROB.PAS ( 1018 байт ) Кол-во скачиваний: 258

Автор: -Pautina- 28.05.2007 14:45

Люди, не будьте такими равнодушными! я без вашей помощи никак не справлюсь!

Автор: Sto 28.05.2007 17:27

Цитата(Pautina @ 24.05.2007 16:32) *

1. Получить аналитическую модель (выражение в виде формулы) решения приведенной ниже задачи.

n-высота
m-длинна
k-колдичество поворотов

Если m = 1 тогда k=0 (или 1)
Если m = 2 тогда k=3
Если m >= 3 тогда k=2*(n-1)

Автор: Pautina 28.05.2007 23:48

А куда я должна это вставить в программу?.. что-то не работает..

Автор: Sto 29.05.2007 0:05

Это аналитическая модель.

Var
n, m, k :Integer;
Begin
Write('n -> ');
ReadLn(n);
Write('m -> ');
ReadLn(m);
If (m = 1) Then k := 1;
If (m = 2) Then k := 3;
If (m >= 3) Then k :=2*(n-1);
Write('k = ', k);
ReadLn;
End.

Автор: Pautina 29.05.2007 0:47

Sto, СПАСИБО тебе огромное!!!! ты мой спаситель!!!!