Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

Лабиринт - C++
Народ помогите! есть задание: Лабиринт представляет собой квадрат, состоящий из NxN сегментов. Каждый из сегментов может быть либо...

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

Лабиринт C++ - C++
я написал код лабиринта на c++, с помощью чего можно найти кратчайший путь выхода из лабиринта? #include <iostream> #include...

лабиринт - C++
Коридорами лабиринта разрешается двигаться только в направлениях, указанных стрелками. Человек вошел в комнату A и, выбирая случайным...

Лабиринт - C++
Вообщем у меня 2 проблемы: 1) Либирнт генерирует 2 раза 2) '8' ходит как хочит Поправте плз код #include <iostream> #include...

Лабиринт - C++
Помогите пожалуйста: Создать игру «Лабиринт». Игра состоит из 2 уровней (лабиринтов), отличающихся по сложности. Лабиринты появляются...

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

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

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

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

Лабиринт с++ - C++
Есть код. только мне не понятен алгоритм который работает в bool PathExists(Labyrinth& lab, int y1, int x1, int y2, int x2) { и...

Лабиринт - C++
Всем привет. Подскажите, вот делаю игру (понятно какую) но проблема. Вот код #include "stdafx.h" #include <iostream> using namespace...

Лабиринт - C++
#include <iostream> #include <fstream> #include <conio.h> #include <time.h> #include <cmath> #include <stdio.h> using...

Игра Лабиринт - C++
В лабиринте средством перемещения так сказать "персонажа" являются стрелки.Помогите пожалуйста сделать так чтобы стена была стеной...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru