IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Закавыристая процедура, работа с деревьями
Clon
сообщение 19.05.2006 15:25
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 37
Пол: Мужской

Репутация: -  0  +


Вот тут написал программу. Она создает деверо общего вида, добавляет к нему элементы, печатает его. Но вот главная процедура мне что-то не хочет даваться. Задача ее состоит в том, чтобы подсчитать число вершин дерева, степень которых совпадает со значением их элементов. Причем элементы типа Char. Я знаю есть такая функция ord, но как это вообще реализовать я не могу. Вот прога, помоги те если не трудно
Код
program lab22(input,output);
type tree = ^node;
   node      = record
           inf    : char;
           brat,son    : tree;
        end;    
var t            : tree;
   q,data,kuda,shto        : char;
   c,i            : integer;
b            : boolean;
procedure dop(var t : tree);
begin
   if t^.brat=nil then
   begin
      new(t^.brat);
      writeln('vvedi element');
      readln(t^.brat^.inf);
      t^.brat^.brat:=nil;
      t^.brat^.son:=nil;
   end
   else dop(t^.brat);
end;
procedure sozd(var t:tree;var data:char);
begin
   writeln('vvedite element');
   readln(data);
   new(t);
   t^.inf:=data;
   t^.brat:=nil;
   t^.son:=nil;
end;
procedure add(var t : tree; data:char);
begin
   if t^.inf<>kuda then
   begin
      if t^.son<>nil then add(t^.son,kuda);
      if t^.brat<>nil then add(t^.brat,kuda);
   end
   else
   begin
      if t^.son=nil then
      begin
     new(t^.son);
     write('vvedite element:');
     readln(t^.son^.inf);
     t^.son^.son:=nil;
     t^.son^.brat:=nil;
      end
      else dop(t^.son);
   end;
end;
procedure dobavlenie;
begin
   write('kuda postavit element?:');
   readln(kuda);
   add(t,kuda);
end;
procedure print(t:tree; var i:integer);
var j : integer;
begin
   write('':i,t^.inf);
   if t^.brat<>nil then
   begin
      print(t^.brat,i);
   end;
   if t^.son<>nil then
   begin
      writeln;
      print(t^.son,i);
   end;
   i:=i+1;
end;
begin
   while b<>true do
   begin
      writeln('      1 - Sozdanie');
      writeln('      2 - Dobavlenie elementa');
      writeln('      3 - Print');
      writeln('      4 - Udalenie');
      writeln('      5 - Exit');
      writeln('      6 - Active');
write('vvedite punkt menu:');
      readln(c);
      if c=1 then sozd(t,data);
      if c=2 then dobavlenie;
      if c=3 then print(t,i);
      writeln;
      writeln('hotite prodoljit?y/n');
      readln(q);
      if q='y' then b:=false;
      if q='n' then b:=true;
      if (q<>'y') and (q<>'n') then
      begin
     writeln('Tolko "n" ili "y"!');
     readln(q);
      end;
   end;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Clon   Закавыристая процедура   19.05.2006 15:25
volvo   Если ты имеешь в виду УРОВЕНЬ расположения элемент...   19.05.2006 15:34
Clon   Ну, насколько я знаю, степенью вершины называется ...   19.05.2006 15:38
volvo   У тебя по определению в бинарном дереве не может б...   19.05.2006 16:14
Clon   Но у меня дерево не бинарное, а общего вида   19.05.2006 16:18
volvo   Это твое определение дерева? type tree = ^node; ...   19.05.2006 16:22
Clon   То есть в записи node задавать больше вершин? Ну а...   19.05.2006 16:43
volvo   Ясно. Я понял твою логику. У тебя Brat - это указа...   19.05.2006 17:13
Clon   Странно, подогнал процедуру под свою прогу, но он ...   19.05.2006 18:12
volvo   Внимательно: p :=t.brat; { <--- Здесь ...   19.05.2006 18:47
Clon   Все, огромное спасибо, заработало. Кстати, а где м...   19.05.2006 19:03
volvo   Кстати, а где можно посмотреть процеруду удаление ...   20.05.2006 19:50
Clon   Ошибка. Указывает на dispose(pt); и пише...   20.05.2006 20:42
volvo   Ну, не знаю. Я скопировал сюда из только что отраб...   20.05.2006 20:50
Clon   Ладно, все равно спасибо. Вот только процедура эта...   20.05.2006 21:15


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 7:02
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"