1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Только вот возникла другая проблема...не могу поять в чём причина..вроде в процедруре Poisk я сделала всё так....а она неправильно работает..еслии я ввожу эелемент, котрого в дереве нет,эта процедура всё равно выводит, что такой элемент есть...
procedure poisk(var r:pspisok;a:string);
var y:boolean;
beginif r=nilthen writeln('net');
if r^.i=a then writeln('est')
elseif a>r^.i then poisk(r^.nextR,a)
else poisk(r^.nextL,a);
end;
Только вот возникла другая проблема...не могу поять в чём причина..вроде в процедруре Poisk я сделала всё так....а она неправильно работает..еслии я ввожу эелемент, котрого в дереве нет,эта процедура всё равно выводит, что такой элемент есть...
procedure poisk(var r:pspisok;a:string);
var y:boolean;
beginif r=nilthen writeln('net');
if r^.i=a then writeln('est')
elseif a>r^.i then poisk(r^.nextR,a)
else poisk(r^.nextL,a);
end;
procedure poisk(r:pspisok; a:string);
var y:boolean;
beginif r = nilthenbegin
writeln('net');
exit; { <--- Не забывай выходить из процедуры !!! }end;
if r^.i = a then writeln('est')
elseif a > r^.i then poisk(r^.nextR, a)
else poisk(r^.nextL, a);
end;
Если не сделаешь выход из процедуры - получишь ошибку при попытке обратиться по нулевому указателю...
Если не сделаешь выход из процедуры - получишь ошибку при попытке обратиться по нулевому указателю...
а я то об этом даже и не думала...спасибо за исправление... Но у меня есть ещё какие то проблемы в этой процедуре поиска...я же правильно пишу условия при которых писать "нет элемента" и ''есть элемент''??Если кто-нибудь увидит ошибку, то покажите где пожалста
procedure poisk(r:pspisok; a:string);
var y:boolean;
beginif r = nilthenbegin
writeln('net');
exit;
end;
if r^.i = a then writeln('est')
elseif a > r^.i then poisk(r^.nextR, a)
else poisk(r^.nextL, a);
end;
Ну, я только что пробовал. Все правильно пишет. Когда есть - пишет "est", когда нету - "net"... Ты какие данные вводишь? И что искать пытаешься? Давай, я с твоими данными попробую...
volvo, БоЛьШоЕ СпАсИбО за помощь. ...я во всем разобралась...всегда появлялся ответ "есть", потому что я указывала в readln имя не той переменной, что вводила..вот он и читал не то....когда исправила всё заработало..УРА!!УРА!!УРА!!