Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.75
Zerkal0
0 / 0 / 0
Регистрация: 15.07.2009
Сообщений: 41
#1

Двумерный лабиринт - C++

15.07.2009, 21:52. Просмотров 2895. Ответов 7
Метки нет (Все метки)

Всем здраствуйте. Пожалуйста посоветуйте что-нибудь).

Так же как и автор этой темы начал учить C++. Сам по книгам, это мой первый язык программирования. Занимался по книге Уолтера Савича "Программирование на С++" 4-е изд-ие. Книгу полностью освоил, решил все задачи кроме двух-трёх(не решил например задачу "ханойские башни"). В целом освоил основные понятия С++. Дальше прочитал Шилдта "С++ для начинающих". Автор излагает очень доступно, правда жаль задачек нету. Поэтому решил взять как раз книгу Дейтела, там уж задач хватает. Но что-то не очень получается их решать.
Например кто читал эту книгу, тот знает задачу на прохождение лабиринта, который представлен в виде двухмерного массива (стр. 394 упр 5.25). Сижу который день не знаю как решить. Это от тупости или недостатка опыта?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2009, 21:52     Двумерный лабиринт
Посмотрите здесь:

игра лабиринт C++
Лабиринт C++
C++ Лабиринт
Лабиринт C++
C++ лабиринт
Лабиринт с++ C++
Лабиринт с телепортами на C++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Digital Imp
2 / 2 / 0
Регистрация: 13.07.2009
Сообщений: 10
16.07.2009, 06:43     Двумерный лабиринт #2
А в чём проблема? Я глянул задачку, по сути он тут даже решение подсказывает.

Забиваешь масив. Хардкодешь "игрока" в начало. Дальше тривиальное решение, проверяешь, есть ли справа от тебя стенка, идёшь вдоль неё. Чего конкретно не выходит?, выкладывай, сейчас разберёмся. Выложи, что уже написал.
mamedovvms
2915 / 836 / 93
Регистрация: 30.04.2009
Сообщений: 2,615
16.07.2009, 06:49     Двумерный лабиринт #3
да выкладывай вместе и посмотрим, просто я тоже начал учить С++ и мне будет интересно, а может даже поучавствую в решении
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
16.07.2009, 10:08     Двумерный лабиринт #4
mamedovvms, ничего себе)))только только и вот репутация на мастере)))))))))
Цитата Сообщение от Digital Imp Посмотреть сообщение
Выложи, что уже написал
и я посмотрю))
mamedovvms
2915 / 836 / 93
Регистрация: 30.04.2009
Сообщений: 2,615
16.07.2009, 10:13     Двумерный лабиринт #5
@lex, да нет репутация здесь непричем можешь просто посмотреть что я до этого делал, посмотреть сколько я писал сообщений и сколько помогал, просто вот решил выучить С++ и интересные задачки и их решения будут очень к стати, а если еще и будет возможность поучаствовать в решении таких задачь то это вообще прекрасно
Zerkal0
0 / 0 / 0
Регистрация: 15.07.2009
Сообщений: 41
17.07.2009, 21:52  [ТС]     Двумерный лабиринт #6
Хорошо. Попозже напишу. Сейчас просто файл где то затерялся. )

Да, действительно алгоритм решения даётся в условии, вроде всё просто. Но правая сторона постоянно меняется. Конечто можно менять её координаты с помощью рекурсии, но если организовывть решение с помощью управляющей инструкции if{}else if... , то у меня пока что не выходит.

Добавлено через 2 минуты 41 секунду
При следующем вызове функции идёт обращение не к той ветви if
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
17.07.2009, 21:59     Двумерный лабиринт #7
Цитата Сообщение от Zerkal0 Посмотреть сообщение
Всем здраствуйте. Пожалуйста посоветуйте что-нибудь).
книга Макконнелл. "Совершенный код." есть глава, посвященная рекурсии. в ней как раз рассматривается двумерный лабиринт.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2009, 22:43     Двумерный лабиринт
Еще ссылки по теме:

Лабиринт C++
C++ Игра Лабиринт
Лабиринт C++ C++
Лабиринт C++
C++ лабиринт

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

Или воспользуйтесь поиском по форуму:
Zerkal0
0 / 0 / 0
Регистрация: 15.07.2009
Сообщений: 41
17.07.2009, 22:43  [ТС]     Двумерный лабиринт #8
Вот часть кода. Всё равно вряд ли правильно.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void labirint(char a[][12], int row, int column, int right_row, int right_column){
     
     if(column == 10 && a[right_row][right_column] == '.')
       a[right_row][right_column] = 'X';
       else if((a[row][column + 1] == '.' || a[row][column + 1] == 'X') && a[right_row][right_column] == '#'){
            a[row][column + 1] == 'X';
            labirint(a, row, column + 1, right_row, right_column + 1);            
            }
       else if(a[row][column + 1] == '#' && a[right_row][right_column] == '#')
            labirint(a, row - 1, column, right_row - 1, right_column + 1);
       else if((a[row - 1][column] == '.' || a[row - 1][column] == 'X') && a[right_row][right_column] == '#'){
            a[row - 1][column] == 'X';
            labirint(a, row - 1, column, right_row - 1, right_column);           
            }     
       else if(a[row - 1][column] == '#' && (a[right_row][right_column] == '.' || a[right_row][right_column] == 'X')){
            a[row][column + 1] = 'X';
            labirint(a, row, column + 1, right_row, right_column);
            }
  
  ...
  }
Добавлено через 2 минуты 13 секунд
За ссылку на книгу Макконнелла спасибо.) Но посмотреть всегда успею, огорчает то что самому решить пока не выходит.
Yandex
Объявления
17.07.2009, 22:43     Двумерный лабиринт
Ответ Создать тему
Опции темы

Текущее время: 15:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru