Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal->Delphi] Обход дерева 
:(
    Опции темы
zarogon
Дата 17.10.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 4.11.2005
Где: Украина, Киев

Репутация: нет
Всего: нет



Всем доброго времени суток. помогите пожалуйста переделать прогу для обхода дерева  с паскаля на делфи. Вот исходный код на паскале:
Код

Program DemidenkoS;
Uses
  Crt, Graph;
Const
  Arr : array [1..6] of integer=(160,80,40,20,10,5);
  Arr1 : array [1..6] of integer=(120,80,70,60,50,40);
Type
  ss=^sp;
  sp=record
       elem:byte;
       Next : array[1..2] of ss;
  end;
Var
  a, b, c, d : longint;
  s : string;
  grDriver : integer;
  grMode : integer;
  a1, b1 : real;
  x, Some, Max, Min : ss;
Procedure Zap(y : ss; n : integer);
Var
  aa,bb:integer;
Begin
  y^.elem:=random(99)+1;
  bb:=random(3);
  if n<1
    then
      bb:=2;
        if n<a
          then
            for aa :=1 to bb do
              begin
                new(y^.next[aa]);
                y^.next[aa]^.next[1]:=nil;
                y^.next[aa]^.next[2]:=nil;
                zap(y^.next[aa],n+1);
              end;
End;
Procedure Strel(x1, y1 : integer; k : Real);
Var
  aa : Real;
Begin
  aa:=arctan(k);
  if k>0
    then
      begin
        line(x1,y1,x1+round(10*cos(aa+pi/18)), y1-round(10*sin(aa+pi/18)));
        line(x1,y1,x1+round(10*cos(aa-pi/18)), y1-round(10*sin(aa-pi/18)));
        line(x1+round(10*cos(aa+pi/18)),y1- round(10*sin(aa+pi/18)),x1+ round(10*cos(aa-pi/18)),y1- round(10*sin(aa-pi/18)));
      end
    else
      begin
        aa:=-aa;
        line(x1,y1,x1-round(10*cos(aa+pi/18)), y1-round(10*sin(aa+pi/18)));
        line(x1,y1,x1-round(10*cos(aa-pi/18)), y1-round(10*sin(aa-pi/18)));
        line(x1-round(10*cos(aa+pi/18)),y1- round(10*sin(aa+pi/18)),x1- round(10*cos(aa-pi/18)),y1- round(10*sin(aa-pi/18)));
      end
end;
Procedure Wiv(y : ss; n, x1, y1 : integer);
Var
  spi : ss;
Begin
  SetColor(n+1);
  Circle(x1,y1,10);
  Str(y^.elem, s);
  if length(s)=2
    then
      OutTextXY(x1-6, y1-2, s)
    else
      OutTextXY(x1-3, y1-2, s);
        if n<a
          then
            begin
              if y^.next[1]<>nil
                then
                  begin
                    SetColor(n+1);
                    Line(x1,y1+10,x1-(arr[n] div 2),y1+((arr1[n]-20) div 2)+10);
                    SetColor(n+2);
                    Line(x1-(arr[n] div 2),y1+((arr1[n]-20) div 2)+10,x1-arr[n],y1+arr1[n]-10);
                    Strel(x1-arr[n],y1+arr1[n]-10, (arr1[n]-20)/arr[n]);
                    Wiv(y^.next[1],n+1,x1-arr[n],y1+ arr1[n]);
                  end;
              if y^.next[2] <> nil
                then
                  begin
                    SetColor(n+1);
                    Line(x1,y1+10,x1+arr[n],y1+arr1[n]-10);
                    SetColor(n+2);
                    Line(x1+(arr[n] div 2),y1+((arr1[n]-20) div 2)+10,x1+arr[n],y1+arr1[n]-10);
                    Strel(x1+arr[n],y1+arr1[n]-10,- (arr1[n]-20)/arr[n]);
                    Wiv(y^.next[2],n+1,x1+arr[n],y1+ arr1[n]);
                  end;
           end;
end;
Begin
  ClrScr;
  Randomize;
  Repeat
  new(x);
  a:=6;
  x^.next[1]:=Nil;
  x^.next[2]:=Nil;
  Zap(x,0);
  Max:=x;
  Min:=x;
  writeln;
  grDriver := Detect;
  InitGraph(grDriver, grMode,'');
  SetFillStyle(solidfill,15);
  SetColor(15);
  Wiv(x,1,320,50);
  Delay(50000);
  until KeyPressed;
End.

PM MAIL ICQ   Вверх
Hidrag
Дата 18.10.2006, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: нет
Всего: 25



могу попробывать, но только в выходные с выводом графики на форму....


--------------------
user posted image
PM WWW ICQ   Вверх
Бутерброд
Дата 19.10.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 6.10.2006
Где: г. Ижевск

Репутация: нет
Всего: нет



Zarogon, если использовать компонент TTreeView, то всё становится просто как день. 
PM MAIL ICQ   Вверх
zarogon
Дата 20.10.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 4.11.2005
Где: Украина, Киев

Репутация: нет
Всего: нет



Цитата(Бутерброд @ 19.10.2006,  12:59)
Zarogon, если использовать компонент TTreeView, то всё становится просто как день.

Напиши пример плиз  smile 
PM MAIL ICQ   Вверх
brodaga163
Дата 14.6.2008, 13:34 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 14.6.2008

Репутация: -1
Всего: нет



ребята, пожалуйста помогите сделать один пункт в создании дерева...надо  написать процедуру удаления всего под деревом- если это лист-удалить лист, уесли целая ветка-удалить целиком всю 
 плиз отправьте что получилось на [email protected] буду очень признателен 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1170 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.