IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Рекурсия, не могу найти ошибку, N нас. пунктов, пары пунктов соединены, узнать, можно ли попасть из
Cool_abc
сообщение 25.04.2010 1:46
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Кирилл

Репутация: -  0  +


Текст задачи:
Имеется N населенных пунктов, пронумерованных от 1 до N (N = 10).
Некоторые пары пунктов соединены дорогами. Определить, можно ли по
дорогам попасть из пункта 1 в N-й пункт. Информация о дорогах задается в
виде последовательности пар чисел i и j (i < j), указывающих что i-й и j-й
пункты соединены дорогой. Признак конца этой последовательности – пара
нулей.
Из условия я вынес 1 из основных положений, что по кругу между пунктами мы ходить не будем, т.е. например
1-2-3-5-6-1 (- догора), задача после этого сущаственно упростилась:) написал, но не работает прога, помогите плиз найти ошибку.. или мот я в корне был не прав.. наставьте на путь правильный

Мой код:


Program lab;
Type int=integer;
mas=array [1..30, 1..2]of int;
{ 30 - условное число, просто чтобы ограничить массив}
Var fl: boolean;
x: mas;
k:int;

Procedure vvod(a:mas);
Var x,y,i:int;
begin
Writeln('vvedite parbl 4isel');
x:=1;y:=1;i:=0;
While (x<>0) and (y<>0) do
begin
if i<>0 then begin
a[i,1]:=x;
a[i,2]:=y;
end;
Write('vvedite 1 4islo ');readln(x);
Write('vvedite 2 4islo ');readln(y);
i:=1+i
end
end;

procedure find(A:int;var f:boolean);
Var i:int;
begin
if x[A,2]=10 then f:=true
else begin
i:=1;
while (x[i,1]<>0) and (x[i,2]<>0) and (not f) do
begin
if x[A,2]=x[i,1] then
find(i,f);
i:=i+1
end
end
end;

Begin
vvod(x);
fl:=false;
k:=1;
while (x[k,1]<>0) and (x[k,2]<>0) and (not fl) do
begin
if x[k,1]=1
then find(k,fl);
k:=k+1
end;

if fl
then writeln('yes')
else writeln('nno')
End.


первый проход вынес в основную программу, т.к. нужно было сделать 1 проход по всем x(i,1)=1, т.е. тем. у которых первый пункт - наш начальный и в процедуре в стоке "if x[A,2]=x[i,1] then .." не смог бы подставить вместо x[i,1] единицу
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 27.04.2010 12:46
Сообщение #2


Гость






Цитата
Главная и единственная задача этого форума, на мой взгляд - общение.
В таком случае извините, что столько времени вам надоедал... я, видимо, просто ошибся форумам...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Cool_abc   Рекурсия, не могу найти ошибку   25.04.2010 1:46
Lapp   наставьте на путь правильный ... первый проход вын...   25.04.2010 3:31
Cool_abc   [b]Добавлено через 4 мин. Да, еще: входные данн...   25.04.2010 13:46
Cool_abc   Рекурсия [b]должна быть элегантной )). funct...   25.04.2010 19:12
volvo   Cool_abc, поиск ошибок начинай прямо с процедуры V...   25.04.2010 9:09
Lapp   эм... здесь же по условию не подходят дходные данн...   26.04.2010 6:17
Cool_abc   Упс!.. мой фолт, извиняюсь, недосмотрел. Ус...   26.04.2010 14:34
Lapp   из условия i<j я понимал, что из этого следует...   27.04.2010 7:13
TarasBer   > раньше у меня схожее с этим заменялось введен...   26.04.2010 16:04
Cool_abc   ... Хотя да, разницы тут, если всмотреться, нет, ...   26.04.2010 16:23
TarasBer   Это программа, которую я специально написал только...   26.04.2010 16:31
volvo   Я тебе открою тайну: если перед этим самым циклом ...   27.04.2010 12:01
Lapp   Повторяю еще раз: у этого форума задача - научить ...   27.04.2010 12:43
TarasBer   > Количество инструкций еще не прямо пропорцион...   27.04.2010 12:12
volvo   В таком случае извините, что столько времени вам н...   27.04.2010 12:46


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 18:22
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"