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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2011, 17:56   #1
ilushka2306
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 48
По умолчанию проблема с прогой

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    Button1: TButton;
    Button2: TButton;

    PNode=^TNode;

  TNode= record
    nKey:Integer;
    nCount:integer;
    pLeft:pNode;
    pRight:pNode;
  end;

  TTree=class
  private
  public
    fTree:pNode;
    procedure Search(x:integer;var node:PNode);
    constructor Create;
  end;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  t:TTree;

implementation

{$R *.dfm}

constructor TTree.Create;
begin
  fTree:=nil;
end;

procedure TTree.Search(x: Integer; var node: PNode);
//  Поиск вершины с ключом x в дереве со вставкой
//             (рекурсивный алгоритм).
begin
  if node=nil  then
  // Вершины в дереве нет; включить ее.
  begin
    node:=new(PNode);
    with node^ do begin
      nKey:=x;
      nCount:=1;
      pLeft:=nil;
      pRight:=nil;
    end;
  end
  else
    if x<node^.nKey then
      Search(x,node^.pLeft)
    else
      if x>node^.nKey then
        Search(x,node^.pRight)
      else
        inc(node^.nCount);
end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  i:integer;
begin
  randomize;
  t:=TTree.Create;
  for I := 0 to 9 do
    t.Search(random(100),t.fTree);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  item:TTreeNode;
begin
  item:=nil;
  Vyvod(t.fTree,item);
end;


procedure TForm1.Vyvod(node:PNode;item:TTreeNode);
var
  tmpItem:TTreeNode;
begin
  if node <> nil then begin
    tmpItem:=TreeView1.Items.AddChild(item,inttostr(node^.nKey));
    vyvod(node^.pLeft,tmpItem);
    vyvod(node^.pRight,tmpItem);
  end;
end;
end.
Не работает, помогите найти ошибку
ilushka2306 вне форума Ответить с цитированием
Старый 13.05.2011, 18:04   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что конкретно не работает-то? Или не компилируется (если да, то какие ошибки выводит)?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 13.05.2011, 18:20   #3
RomiKon
Форумчанин
 
Регистрация: 11.04.2010
Сообщений: 143
По умолчанию

Конечно не компилируется вы типы объявляете в секции объявления формы=)
RomiKon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с прогой Виталька Помощь студентам 5 24.01.2010 19:35
проблема с прогой mytаbora (амперметр) kasta Помощь студентам 4 14.11.2008 17:43
Проблема с прогой Claster Общие вопросы Delphi 1 11.09.2008 17:53