Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поиск выхода из лабиринта 
:(
    Опции темы
ShadowC
Дата 25.10.2011, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 23.6.2011

Репутация: нет
Всего: нет



Цитата(baldina @ 25.10.2011,  17:51)
а что в моем примере не так? массив и точка передается в параметрах

я полагаю точка это не координаты,а сама точка тоесть в данном примере x[2][0] ну и у тебя 2 функции
PM MAIL   Вверх
math64
Дата 25.10.2011, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



Можно рекурсию свернуть в цикл, принт реализовать внутри функции - и будет одна функция.
Код

#define N 12
#define M 12
int findPath(char maze[M][N], int x, int y) {
  int dir, exit, entry, turn, nextdir, nextx, nexty;
  char ch;
  entry = 1;
  exit = 0;
  dir = 0;
  while(!exit) {
     for (turn = - 1; turn <= 2; turn++) {
       nextdir = (dir + turn) & 3;
       switch (nextdir) {
         case 0: nextx = x; nexty = y - 1; break;
         case 1: ...; break;
         case 2: ...; break;
         case 3: ...; break;
       }
       if (maze[nextx][nexty] != '#') {
         x = nextx;
         y = nexty;
         dir = nextdir;
         ch = "^<v>"[dir];
         if (maze[x][y] == ch) {
           printf ("зацикливание - правило правой руки не работает\n");
           return 0;
         } 
         maze[x][y] = ch;
         entry = 0;
         printf(...);
         if (x == 0 || y == 0 || x == M-1 || y == N-1)
          exit = 1;
         break;
       }
     }
     if (entry) {
       printf("ходов нет - замурован\n");
       return 0;
     } 
  }
  return 1;
}


Добавлено через 5 минут и 4 секунды
Если не нравится начальную точку передавать координатами в параметрах - можно передать крестиком на карте лабиринта.
Тогда надо в начале функции добавить цикл по поиску крестика. Будет один параметр - карта лабиринта
PM   Вверх
baldina
Дата 25.10.2011, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



Цитата(ShadowC @  25.10.2011,  18:28 Найти цитируемый пост)
у тебя 2 функции 

вторая функция (print) к алгоритму отношения не имеет, ее можно просто выбросить. к тому же она вызывается лишь раз, ее тело можно встроить в функцию maze. 

Цитата(ShadowC @  25.10.2011,  18:28 Найти цитируемый пост)
я полагаю точка это не координаты,а сама точка тоесть в данном примере x[2][0]

я всегда думал, что точка характеризуется координатами, а не тем, что в ней находится. например клетка на шахматной доске определяется координатами а не цветом (цвета всего 2, клеток 64). 
если дело в количестве аргументов функции, заведите struct Point { int y, z; };

можно и так
Цитата(math64 @  25.10.2011,  21:02 Найти цитируемый пост)
Если не нравится начальную точку передавать координатами в параметрах - можно передать крестиком на карте лабиринта.
Тогда надо в начале функции добавить цикл по поиску крестика. Будет один параметр - карта лабиринта 

но это имхо параноидальное решение)))))

ShadowC, кажется Вы слишком придираетесь)))) А как ведь начиналось:
Цитата(ShadowC @  24.10.2011,  18:13 Найти цитируемый пост)
только как реализовать рекурсивную функцию используя это в голову не приложу,а самое главное,я не могу понять как выйти


PM MAIL   Вверх
newbee
Дата 26.10.2011, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: 3
Всего: 19



math64baldina, имхо вы делаете человеку медвежью услугу. Суть передали, зачем досконально код писать, пусть сам думает. Думать - полезно.


--------------------
You're face to face
With man who sold the world
PM   Вверх
Lols
Дата 26.10.2011, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 21.10.2011

Репутация: нет
Всего: нет



Так что, получилась одна функция или нет?
PM MAIL   Вверх
math64
Дата 26.10.2011, 07:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



Цитата(newbee @  26.10.2011,  00:23 Найти цитируемый пост)
math64, baldina, имхо вы делаете человеку медвежью услугу. Суть передали, зачем досконально код писать, пусть сам думает. Думать - полезно.

Проще написать код - чем описать как он работает. В моём коде есть ошибки - я его не запускал даже на компиляцию, пусть ищет, пишет комментарии.
PM   Вверх
baldina
Дата 26.10.2011, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



Цитата(newbee @  26.10.2011,  00:23 Найти цитируемый пост)
Суть передали, зачем досконально код писать, пусть сам думает. Думать - полезно. 

Моск у всех по-разному устроен. Не всегда то, что одному очевидно, является простым для другого.
Бывает, что на анализ предоставленного кода человек тратит значительные усилия, а сам написать вообще не может.

Мы не сразу код начали писать.

Добавлено через 4 минуты и 36 секунд
моей первой книгой в области информатики были "Алгоритмы и структуры данных" Н.Вирта. тогда это была чуть ли не единственная книга про алгоритмы в магазине.
при первом прочтении я ничего не понял. при втором понял все. при третьем осознал, что во второй все понял неправильно.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1234 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.