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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2012, 19:25   #1
галинка94
Пользователь
 
Регистрация: 26.10.2012
Сообщений: 10
По умолчанию дерева(допоможіть переробити)

Потрібно не вставити вузол а замінити!!!
Код:
program derevo;
uses crt;
type der=^pointer;
     pointer=record
     kl:integer;
     zap: string[15];
     pr, lv: der;
end;
var vs, vl, q:der;
    tekst: string[15];
    kluth:integer;
procedure vderevo;
begin
  vl:=vs;
  repeat
    while kluth > vl^.kl do
      begin
        if vl^.pr=nil then
          begin
            new(vl^.pr);
            vl:=vl^.pr;
            vl^.kl:=kluth;
            vl^.zap:=tekst;
            vl^.lv:=nil;
            vl^.pr:=nil;
          end else
            vl:=vl^.pr;
      end;
    while kluth< vl^.kl do
      begin
        if vl^.lv=nil then
          begin
            new(vl^.lv);
            vl:=vl^.lv;
            vl^.kl:=kluth;
            vl^.zap:=tekst;
            vl^.pr:=nil;
            vl^.lv:=nil;
          end else
        vl:=vl^.lv;
      end;
until kluth=vl^.kl;
end;
begin
  clrscr;
  new(vs);
  vs^.zap:='Ѓi* а*Ґ';
  vs^.kl:=100;
  vs^.pr:=nil;
  vs^.lv:=nil;
  writeln('Kluch Text');
repeat
  readln(kluth, tekst);
  vderevo;
until kluth=0;
  writeln('                 Котята 1'); writeln;
  vl:=vs;
  writeln('                      ',vl^.zap);
  writeln('                       /\');
  writeln('                      /  \');
  writeln('                     /    \');
  writeln('                    /      \');
  writeln('                   /        \');
  writeln('                  /          \');
  writeln('            ',vl^.lv^.zap,'          ',vl^.pr^.zap);
  writeln('               /                \');
  writeln('              /                  \');
  writeln('             /                    \');
  writeln('            /                      \');
  writeln('           /                        \');
  writeln('          /                          \');
  writeln('     ',vl^.lv^.lv^.zap,'                   ',vl^.pr^.pr^.zap);
  writeln;
  writeln('Press any key ...');
  readkey;
  writeln;
  kluth:=75;
  tekst:='одним ';
  vderevo;
  writeln('                 binarne derevo 2'); writeln;
  vl:=vs;
  writeln('                      ',vl^.zap);
  writeln('                       /\');
  writeln('                      /  \');
  writeln('                     /    \');
  writeln('                    /      \');
  writeln('                   /        \');
  writeln('                  /          \');
  writeln('            ',vl^.lv^.zap,'          ',vl^.pr^.zap);
  writeln('               / \              \');
  writeln('              /   \              \');
  writeln('             /     \              \');
  writeln('            /       \              \');
  writeln('           /         \              \');
  writeln('          /           \              \');
  writeln('   ',vl^.lv^.lv^.zap,'    ',vl^.lv^.pr^.zap,'   ',vl^.pr^.pr^.zap);
  writeln;
  writeln('Press any key ...');
  readkey;
  writeln;
end.

Последний раз редактировалось Stilet; 08.11.2012 в 20:09.
галинка94 вне форума Ответить с цитированием
Старый 08.11.2012, 19:50   #2
галинка94
Пользователь
 
Регистрация: 26.10.2012
Сообщений: 10
По умолчанию

Код:
program derevo;
uses crt;
type der=^pointer;
     pointer=record
     kl:integer;
     zap: string[15];
     pr, lv: der;
end;
var vs, vl, q:der;
    tekst: string[15];
    kluth:integer;
procedure vderevo;
begin
  vl:=vs;
  repeat
    while kluth > vl^.kl do
      begin
        if vl^.pr=nil then
          begin
            new(vl^.pr);
            vl:=vl^.pr;
            vl^.kl:=kluth;
            vl^.zap:=tekst;
            vl^.lv:=nil;
            vl^.pr:=nil;
          end else
            vl:=vl^.pr;
      end;
    while kluth< vl^.kl do
      begin
        if vl^.lv=nil then
          begin
            new(vl^.lv);
            vl:=vl^.lv;
            vl^.kl:=kluth;
            vl^.zap:=tekst;
            vl^.pr:=nil;
            vl^.lv:=nil;
          end else
        vl:=vl^.lv;
      end;
until kluth=vl^.kl;
end;
begin
  clrscr;
  new(vs);
  vs^.zap:='Котята';
  vs^.kl:=100;
  vs^.pr:=nil;
  vs^.lv:=nil;
  writeln('Kluch Text');
repeat
  readln(kluth, tekst);
  vderevo;
until kluth=0;
  writeln('                 Котята 1'); writeln;
  vl:=vs;
  writeln('                      ',vl^.zap);
  writeln('                       /\');
  writeln('                      /  \');
  writeln('                     /    \');
  writeln('                    /      \');
  writeln('                   /        \');
  writeln('                  /          \');
  writeln('            ',vl^.lv^.zap,'          ',vl^.pr^.zap);
  writeln('               /                \');
  writeln('              /                  \');
  writeln('             /                    \');
  writeln('            /                      \');
  writeln('           /                        \');
  writeln('          /                          \');
  writeln('     ',vl^.lv^.lv^.zap,'                   ',vl^.pr^.pr^.zap);
  writeln;
  writeln('Press any key ...');
  readkey;
  writeln;
  kluth:=75;
  tekst:='одним ';
  vderevo;
  writeln('                 binarne derevo 2'); writeln;
  vl:=vs;
  writeln('                      ',vl^.zap);
  writeln('                       /\');
  writeln('                      /  \');
  writeln('                     /    \');
  writeln('                    /      \');
  writeln('                   /        \');
  writeln('                  /          \');
  writeln('            ',vl^.lv^.zap,'          ',vl^.pr^.zap);
  writeln('               / \              \');
  writeln('              /   \              \');
  writeln('             /     \              \');
  writeln('            /       \              \');
  writeln('           /         \              \');
  writeln('          /           \              \');
  writeln('   ',vl^.lv^.lv^.zap,'    ',vl^.lv^.pr^.zap,'   ',vl^.pr^.pr^.zap);
  writeln;
  writeln('Press any key ...');
  readkey;
  writeln;
end.
галинка94 вне форума Ответить с цитированием
Старый 08.11.2012, 20:06   #3
Develop
Пользователь
 
Регистрация: 26.06.2010
Сообщений: 52
По умолчанию

Галинко, Ваш кодестайл жжот

Обычно пишут так:

Код:
type 
  PElement = ^TElement;
  TElement = record
     key: integer;
     text: string[15];
     prev, next: PElement;
  end;
и т.д.
Develop вне форума Ответить с цитированием
Старый 08.11.2012, 20:14   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не пойму что менять, у тебя как такового списка то нет, он не вводится должным образом.
Цитата:
pointer=record
Это что? Ты зря переопределяешь тип зарезервированный.
И попрошу по русски писать - форум русскоязычный.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.11.2012, 20:22   #5
галинка94
Пользователь
 
Регистрация: 26.10.2012
Сообщений: 10
По умолчанию

это должно быть дерево .. просто надо заменить тихие на белые
и все больше ничего не нужно
галинка94 вне форума Ответить с цитированием
Старый 08.11.2012, 20:40   #6
Develop
Пользователь
 
Регистрация: 26.06.2010
Сообщений: 52
По умолчанию

Передача параметров в процедуру через глобальные переменные это полная жесть.

Лучше передавать явно: procedure vderevo(pKey: integer; pText: string);
Develop вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Допоможіть Дорош Помощь студентам 2 25.04.2012 23:56