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

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

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

> деревья, опять не выводит(( где ошибка??
-Екатерина-
сообщение 19.05.2007 15:09
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 82
Пол: Женский

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


 
TYPE
ND = ^ NODE;
NODE = RECORD
INF1 : INTEGER;
INF2 : STRING ;
LEFT : ND;
RIGHT : ND;
END;

VAR
ROOT,P,Q,T : ND;
ans: string

procedure create_root (var root:nd);
begin
clrscr;
root:=nil;
writeln ('koren dereva sozdan');
READLN;
END;


PROCEDURE INSERT_EL (P:ND; {адрес включаемого элемента} VAR ROOT:ND);

BEGIN
IF ROOT = NIL
THEN ROOT:= P {элемент стал корнем}
ELSE BEGIN { поиск по дереву }
T := ROOT;
Q := ROOT;
WHILE ( T <> NIL ) DO
BEGIN
IF P^.INF1 < T^.INF1
THEN BEGIN
Q := T;
{ запоминание текущего адреса}
T := T^.LEFT; {уход по левой ветви}
END
ELSE IF P^.INF1 > T^.INF1
THEN BEGIN
Q := T;
{ запоминание текущего адреса}
T := T^.RIGHT;
{уход по правой ветви}
END
ELSE BEGIN
WRITELN ('найден дубль включаемого элемента');
READLN;
EXIT; {завершение работы процедуры}
END
END;
end;
{после выхода из цикла в q - адрес элемента,
к которому должен быть подключен новый элемент}
IF P^.INF1 < Q^.INF1
THEN Q^.LEFT := P {подключение слева }
ELSE Q^.RIGHT := P; {подключение справа}
END;


procedure creat_tree (q: nd; VAR ROOT:ND); {v dialoge}

begin
root:=nil;
ans:='y';
while ans='y' do
begin
new(q);
WRITELN ('vvedite znachenie pervogo inf. polya ');
READLN ( Q^.INF1 );
WRITELN ('vvedite znachenie vtorogo inf. polya ');
READLN ( Q^.INF2 );
INSERT_EL(q,root);
root:=q;
writeln ('ewe yzel?? y-da');
readln (ans);
end;
end;

PROCEDURE obxod_OLP ( Q : ND ); {pryamoi}
BEGIN
clrscr;
IF Q <> NIL
THEN BEGIN
writeln (q^.inf1,'______________',q^.inf2);
obxod_OLP( Q^.LEFT );{уход по левой ветви-Л}
obxod_OLP( Q^.RIGHT );{уход по правой ветви-П}

END
else writeln ('derevo pystoe');
END;



ничего не выводит!! подскажите пожалуйста где ошибка!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
nikita182
сообщение 19.05.2007 15:25
Сообщение #2


Пионер
**

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

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


убери clrscr с процедуры obxod_OLP

ошибок много..

Сообщение отредактировано: nikita182 - 19.05.2007 15:27
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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