Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2012, 08:23   #1
Mauzil
Новичок
Джуниор
 
Регистрация: 14.01.2012
Сообщений: 2
По умолчанию Задача про резчика

Можно платно.
Дано: Лист металла покрывает весь стол резчика.
В металле вырезаны две клетки, не граничащие с
краем стола. Резак над левым верхним углом стола и поднят.

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

//Инструкции резчика:
Begin(); //Начать работу
RezakUp(); //Поднять резак
RezakDn(); //Опустить резак
ToRight(); //Шаг вправо
ToLeft(); //Шаг влево
ToUp(); //Шаг вверх
ToDn(); //Шаг вниз
Stop(); //Кончить работу
//в том числе условия:
OverMet(); //Над металлом
AtTopSide(); //У верхнего края стола
AtBotSide(); //У нижнего края стола
AtRtSide(); //У правого края стола
AtLfSide(); //У левого края стола
Mauzil вне форума Ответить с цитированием
Старый 14.01.2012, 09:20   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

алгоритм (неоптимальный) примерно такой - перемещая резак на каждой клетке проверять OverMet - если обнаружилась дырка - запомнить её местоположение. Таким же образом найти вторую вырезанную клетку. Если у клеток совпадает одна из координат (т.е. отверстия расположены либо строго по горизонтали, либо строго по вертикали) - соединить их линией. Иначе - минимальный путь даст линия когда мы от одного отверстия вырезаем проход до горизонтали (или вертикали - без разницы) второго отверстия, потом (когда оказались на одной линии резак и второе отверстие) - соединяем.
всё.

p.s. В задаче ничего не сказано, куда нужно поместить резак после того, как отверстия соединены проходом... я бы как минимум поднял его. Как максимум - вернул в левый верхний угол стола.

p.p.s. а на каком ЯП это нужно наваять?..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.01.2012, 09:40   #3
Mauzil
Новичок
Джуниор
 
Регистрация: 14.01.2012
Сообщений: 2
По умолчанию

даже не знаю что за язык прогаммирования,преподаватель только сказал что по учебнике Борисенко :основы программирования http://www.twirpx.com/file/406666/ и по учебнику программирования для математиков ,вот туд все про резчика и говорится : http://reslib.com/book/Programmirova...matematikov#12

Благодарю за помощь.




на будущее.
Не надо плодить подряд несколько коротких сообщений!
Это нарушение правил...
для того, чтобы через минуту/другую дописать сообщение,
не надо создавать ещё один новый пост.
нажимайте на предыдущем кнопку "Редактировать" ("Правка")
и дописывайте в своё сообщение, что Вы хотели добавить!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 14.01.2012 в 10:23.
Mauzil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача про доску Katrina* Паскаль, Turbo Pascal, PascalABC.NET 5 20.12.2011 21:01
Задача про города Katrina* Паскаль, Turbo Pascal, PascalABC.NET 1 20.12.2011 01:25
Задача про рекурсию NIKI18 Общие вопросы C/C++ 1 19.12.2011 20:35
Задача на Си про текст Chargos Помощь студентам 5 17.01.2011 01:07
Задача про массив xakkkkker Помощь студентам 2 02.11.2008 10:49