Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2012, 23:47   #1
jekie182
 
Аватар для jekie182
 
Регистрация: 28.02.2012
Сообщений: 6
По умолчанию дерево

будто правельно работает но в конце вывода 268 (
и кучу непонятных чисел (
нужно найти наименьший элемент дерева!
вот код
Program BinDerevo;
uses crt;
type
TreeType = ^ElType;
ElType = Record
inf: integer;
Left, Right: TreeType;
end;
Var tree: TreeType;z: integer;
{------------------------------------------------------------------}
Procedure AddElement(var b: TreeType; k:integer);
begin
if b=nil then
begin
new(b);
b^.inf:=k;
b^.left:=nil;
b^.right:=nil;
end
else
if b^.inf<=k then AddElement(b^.left, k)
else AddElement(b^.right, k);
end;

{-----------------------------------------------------------------------------------------}
Procedure PrintTree(b: TreeType; t: integer);
begin
if b=nil then writeln('derevo puste')
else with b^ do
begin
inc(t);
if left<>nil
then PrintTree(left,t);
write(' ':4*t);
writeln(inf:4);
if right<>nil
then PrintTree(right,t);
dec(t);
end;
end;
{-----------------------------------------------------------------------------------------------------------------}
Procedure SortDown(var b:TreeType);
begin
if b=nil then writeln('derevo puste')
else with b^ do
begin
if right<>nil then SortDown(right);
write(inf,' ');
if left<>nil then SortDown(left);
end;
writeln(b^.left^.inf);
readln;
end;
{------------------------------------------------------------------------}
Procedure ClearTree(var b:TreeType);
begin
if b<>nil then
begin
if b^.left<>nil then ClearTree(b^.left);
if b^.right<>nil then ClearTree(b^.right);
dispose(b);
end;
end;
{------------------------------------------------------------------------------------------------------------------}
begin
tree:=nil;
clrscr;
checkeof:=true;
writeln('vvedit chusla poslidovnosti v kinci- 111');
while z <>111 do
begin
read(z);
AddElement(tree,z);
readln;
end;
writeln('gotove derevo ');
PrintTree(tree,0);readln;
writeln('naimenshi ');
readln;
SortDown(tree);
readln;
ClearTree(tree);
end.
jekie182 вне форума Ответить с цитированием
Старый 27.04.2012, 15:40   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
program BinDerevo;

uses
  crt;

type
  TreeType = ^ElType;
  ElType = Record
    inf: integer;
    Left, Right: TreeType;
  end;

var
  tree: TreeType;z: integer;
{------------------------------------------------------------------}
procedure AddElement(var b: TreeType; k: integer);
begin
  if b = nil then
  begin
    new(b);
    b^.inf := k;
    b^.left := nil;
    b^.right := nil;
  end
  else
  if b^.inf <= k then AddElement(b^.left, k)
  else AddElement(b^.right, k);
end;

{-----------------------------------------------------------------------------------------}
procedure PrintTree(b: TreeType; t: integer);
begin
  if b = nil then writeln('derevo puste')
  else with b^ do
    begin
      inc(t);
      if left <> nil
        then PrintTree(left, t);
      write(' ':4 * t);
      writeln(inf:4);
      if right <> nil
        then PrintTree(right, t);
      dec(t);
    end;
end;
{-----------------------------------------------------------------------------------------------------------------}
procedure findmin(var b: TreeType);
var
  tmp: treetype;
begin
  tmp := b;
  if tmp = nil then writeln('derevo puste')
  else
  begin
    while tmp^.Right <> nil do
      tmp := tmp^.right;
    writeln(tmp^.inf);
  end;
end;
{------------------------------------------------------------------------}
procedure ClearTree(var b: TreeType);
begin
  if b <> nil then
  begin
    ClearTree(b^.left);
    ClearTree(b^.right);
    dispose(b);
  end;
end;
{------------------------------------------------------------------------------------------------------------------}
begin
  tree := nil;
  clrscr;
  writeln('vvedit chusla poslidovnosti v kinci- 111');
  readln(z);
  while z <> 111 do
  begin
    AddElement(tree, z);
    readln(z);;
  end;
  writeln('gotove derevo ');
  PrintTree(tree, 0);readln;
  writeln('naimenshi ');
  readln;
  findmin(tree);
  readln;
  ClearTree(tree);
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дерево в БД kate158 БД в Delphi 3 17.01.2012 11:29
Дерево Vladimer Помощь студентам 1 19.11.2010 07:12
Дерево в С# vedro-compota C# (си шарп) 5 07.11.2010 14:02
Дерево Rifler Паскаль, Turbo Pascal, PascalABC.NET 1 06.05.2008 08:42
Дерево Yoger БД в Delphi 3 25.01.2007 01:24