может быть кто-нибудь ошибку найдет?
uses crt;
type u=^bintree;
rec = record
dist : string;
num : string;
name : string;
date : string;
end;
bintree = record
inf : rec;
l, r : u;
end;
var
tree : u;
fi, fo : text;
procedure ins(var tr : u; p : bintree); {работает}
begin
if tr = nil then
begin
new(tr);
tr^ := p;
end
else if p.inf.name < tr^.inf.name then
ins(tr^.l,p) else
ins(tr^.r,p);
end;
procedure insall; {работает}
var z : bintree;
begin
while not seekeof(fi) do
begin
with z do begin
readln (fi, inf.dist, inf.num, inf.name, inf.date);
l := nil;
r := nil;
ins(tree, z);
end;
end;
end;
procedure printtree(t : u); {работает}
begin
if t <> nil then
begin
printtree(t^.l);
with t^.inf do
begin
writeln(fo, date, num, dist, name);
end;
printtree(t^.r);
end;
end;
procedure findname(tree : u; x : string); {компилируется, но выдает неправ. ответ}
begin
while tree <> nil do
begin
if x = tree^.inf.name then
with tree^.inf do
begin
writeln(fo, date, num, dist, name);
end else if x < tree^.inf.name then tree := tree^.l
else tree := tree^.r;
end;
writeln(fo, 'not found')
end;
procedure delall(tree : u); {не компилируется}
begin
if tree <> nil then
begin
delall(tree^.r);
delall(tree^.r);
dispose(tree);
tree := nil;
end;
end;
begin
assign(fo, 'out.txt');
rewrite(fo);
assign(fi, 'in.txt');
reset(fi);
tree := nil;
insall;
printtree(tree);
close(fo);
close(fi);
end.
Сообщение отредактировано: andr -