| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [C++]Игра "Лабиринт", |
| Автор: Igor11 27.11.2012, 21:12 |
| Реализация класса «стек» в задачах поиска выхода из лабиринта. Описать класс, реализующий стек. Написать программу, использующую этот класс для отыскания прохода по лабиринту. Лабиринт представляется в виде матрицы, состоящей из квадратов. Каждый квадрат или открытый, или закрытый. Вход в закрытый квадрат запрещен. Если квадрат открыт, то вход в него возможен со стороны, но не с угла. Каждый квадрат определяется его координатами в матрице. После отыскания прохода программа печатает найденный путь в виде координат квадратов. |
| Автор: bsa 27.11.2012, 21:40 | ||
Тема перенесена. |
| Автор: t_gran 29.11.2012, 18:45 | ||||||||||||||
stack.h
pos.h
map.h
map.cpp
main.cpp
Makefile
Пример карты 002.map
где, # - стена, 1/2 - старт/финиш http://s1.ipicture.ru/ |
| Автор: Igor11 29.11.2012, 21:54 |
| что именно было сделано в части pos.h? Добавлено через 12 минут и 43 секунды и у меня ошибка на # include "map.h", как именно мне ее исправить, ведь сам фаил map сохранен там же где и программа main |
| Автор: t_gran 30.11.2012, 03:07 | ||||||
А вы не видите? Или не понимаете?
Тут телепатов нет. Что за ошибка? Смею предположить, что вполне возможно ругается на 18-ую строчку:
Если так, то у вас просто компилятор не поддерживает C++11 стандарт. P.S.: Пересобрал под винду и без использования C++11. |
| Автор: Igor11 30.11.2012, 11:45 |
| к сожалению я не понимаю |
| Автор: Igor11 30.11.2012, 12:57 |
| в Pos реализуется запоминания координат пути выхода из лабиринта ? |
| Автор: t_gran 30.11.2012, 18:51 |
| Igor11, это же просто. В стеке вам нужно хранить 2-а значения: номер столбца и номер строки. Что это за абстракция? Правильно, координата или позиция. Вот структура TPos и реализует её. Хотя, по честности, можно было обойтись стандартным stl-овским шаблоном std::pair. Но думал для прозрачности описать свою структуру. Как практика показала - зря. |
| Автор: Igor11 2.12.2012, 01:12 |
| извини что надоидаю , но Вы могли бы сделать программу одним кодом, от меня требуют именно этого, а сам объединить я не могу, то что возникает проблема с кодом касается введения и считывания карты. |
| Автор: t_gran 3.12.2012, 04:02 | ||
|
| Автор: Igor11 3.12.2012, 12:14 |
| // TStack<T>::TNode* node = stack.stack; у мене тут помилка із 'node' undeclared (firs use this function) |
| Автор: Igor11 3.12.2012, 12:32 |
| я исправил эту ошибку, но при запуске программы консоль появляется лишь на мгновение, и функция "system (" pause ")" здесь не помогает. Добавлено через 14 минут и 45 секунд я исправил, и консоль появляется на больше времени но ответа никакого не дает |
| Автор: Igor11 3.12.2012, 12:49 |
![]() Добавлено через 1 минуту и 16 секунд http://ipicture.ru/Gallery/View/18978682.html Добавлено через 2 минуты и 29 секунд она не подключает карту и соответственно не считывает ее |
| Автор: Igor11 3.12.2012, 13:51 |
| що відбувається тут typedef std::vector<std::vector<TSector> > TMap; |
| Автор: t_gran 3.12.2012, 14:04 |
| Блин, тяжёлый случай. Я ПАС!!! |
| Автор: Igor11 3.12.2012, 14:04 |
| а возможно использование карты не в виде файла, а сразу вписать в исходный код? Добавлено @ 14:11 зачем нам нужны эти исключения? //----------------------------------------------// bool IsUse(TMap& map, int col, int row) { bool isUse = true; try { isUse = map.at(row).at(col).use; } catch (...) { ; } return isUse; } и зачем нам следующий фрагмент кода? //----------------------------------------------// bool GetWay(TMap& map, TStack<TPos>& stack); bool DeepTo(TMap& map, TStack<TPos>& stack, int col, int row) { if (IsUse(map, col, row) == false) { stack.Push(TPos(col, row)); if (GetWay(map, stack)) { return true; } } return false; } |