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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2011, 12:46   #1
Nicko_mt
Пользователь
 
Аватар для Nicko_mt
 
Регистрация: 14.04.2011
Сообщений: 31
По умолчанию Поиск в глубину

Доброго времени суток.Возник вопрос по реализации алгоритма поиска вглубину.
Код:
program l;
const r=100;c=100;
var i,j,n,m:integer;
a1:text;
a:array[1..r,1..c] of integer;
procedure search(i,j:integer);
begin
for i:=1 to n do begin
for j:=1 to n do begin
a[i,j]:=1;
if ((i >= 0) and (i < n) and (j >= 0) and (j < n))
 then
if (a[i,j]=0)  then
                    a[i,j]:=1;
                    search(i+1,j);
                    search(i-1, j);
                    search(i,j + 1);
                    search(i,j - 1);

                    end;end;
end;
begin
n:=3;
 assign(a1,'c:\massiv.txt');
 reset(a1);
 for i:=1 to n do begin
 for j:=1 to n do begin
read(a1,a[i,j]);
write(a[i,j],'   ');
end;
writeln;
end;
search(0,1);
for i:=1 to n do begin
for j:=1 to n do begin
write(a[i,j],'   ');
end;
writeln;
end;
readln;
close(a1);
end.
Вводится массив из файла.
0 0 0
0 2 0
2 0 0

Признак того что заполнена клетка это 1 признак пустоты 0.Только почему то когда передаю пару индексов идёт переполнение стека.
Взгляните пожалуйста и укажите на ошибку если сможете.Заранее благодарен.
Nicko_mt вне форума Ответить с цитированием
Старый 20.09.2011, 13:32   #2
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от Nicko_mt Посмотреть сообщение
Взгляните пожалуйста и укажите на ошибку если сможете
А если не сможем - не указывать? ))

Возьми вот этот блок операторов:
Код:
                    a[i,j]:=1;
                    search(i+1,j);
                    search(i-1, j);
                    search(i,j + 1);
                    search(i,j - 1);
- в скобки begin/end.

ФОРМАТИРУЙ свои коды. Неужели хочется вот так тупо искать элементарную ошибку, которая находится за секунду в правильно форматированном коде?? Эх, чему вас только учат..
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 20.09.2011, 14:15   #3
Nicko_mt
Пользователь
 
Аватар для Nicko_mt
 
Регистрация: 14.04.2011
Сообщений: 31
По умолчанию

Огромное спасибо за указание.А ошибка и впраду идиотская.Просто в основном на c подобных писал.А они менеее восприимчивы.Вот решил вспомнить прошлое и о строгости указания подзабыл.
Nicko_mt вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в ширину и глубину Дядя Тёма Фриланс 0 21.05.2011 10:42
Поиск в глубину и ширину в неориентированном графе ya chef Помощь студентам 0 20.11.2010 18:25
Поиск в глубину и проверка связности fallti Общие вопросы C/C++ 4 12.05.2010 21:47