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

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

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

> помогите разобраться с равенством деревьев, нужно помочь дописать
сообщение
Сообщение #1





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

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


Здравствуйте! Мне нужна помощь. Я новенькая и мало чего пока понимаю. Сегодня на лабе я что-то напортачила из того что было, из того что тут взяла.... и вообщем вот что получилось...
Посмотрите кто может и помогите плиз:

uses crt;
type Ptr=^TNode;
Tnode=record
Left:Ptr;
Right:Ptr;
Info:Integer;
end;

var
t,t2,equalt:Ptr;
nh,max,h,i:integer;
//создание первого дерева
procedure zadtree(var t:ptr; h,nh:integer);
begin
if h=5 then
begin
New(t);
t^.left:=nil;
t^.right:=nil;
t^.info:=random(20);
end
else
begin
new(t);
zadtree(t^.left,h+1,nh);
zadtree(t^.right,h+1,nh);
t^.info:=random(20);
end;
end;

procedure writetree(t:Ptr;h,nh:integer);
begin
if t=nil then exit;
if h=nh then
begin
Write(t^.Info,' ');
end
else
begin
writetree(t^.left,h+1,nh);
writetree(t^.right,h+1,nh);
end;
end;


//создание второго дерева

procedure zadtree2(var t2:ptr; h,nh:integer);
begin
if h=5 then
begin
New(t);
t2^.left:=nil;
t2^.right:=nil;
t2^.info:=random(1);
end
else
begin
new(t2);
zadtree(t2^.left,h+1,nh);
zadtree(t2^.right,h+1,nh);
t2^.info:=random(1);
end;
end;

procedure writetree2(t2:Ptr;h,nh:integer);
begin
if t2=nil then exit;
if h=nh then
begin
Write(t2^.Info,' ');
end
else
begin
writetree(t2^.left,h+1,nh);
writetree(t2^.right,h+1,nh);
end;
end;

procedure isEqual(var equal: boolean; t, t2: ptr);
var b_left, b_right: boolean;
begin
if (t = nil) and (t2 = nil) then equal := true
else if (t<>nil) and (t2<>nil)
then begin
isEqual(b_left, t^.left, t2^.left);
isEqual(b_right, t^.right, t2^.right);
equal := (t^.info = t2^.info) and b_left and b_right
end
else equal := false
end;

begin
//основная прога
begin
clrscr;
randomize;
//Выведение на экран первое дерево
t:=nil;
zadtree(t,1,nh);
for i:=1 to 3 do
begin
writetree(t,1,i);
writeln;
end;
//Выведение на экран второе дерево
t2:=nil;
zadtree(t2,1,nh);
for i:=1 to 3 do
begin
writetree(t2,1,i);
writeln;
end;
writeln('Эти деревья по любому не равны :-)))');
end;
end.


Вот вообщем то и все! Эта прога работает, но неправильно, если вы поняли конечно и пользователь не вводит значения, а хотелось бы чтобы вводил.
вообщем посмотрите кому не лень, буду очень благодарна unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





- Текстовая версия 28.11.2021 15:20
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name