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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2011, 23:06   #1
sunny_alice
Пользователь
 
Регистрация: 16.04.2011
Сообщений: 46
Печаль Бинарные деревья

Составить программу, которая выполняет следующие действия:
а) читает из файла, созданного по заданиям предыдущих работ, информацию о студентах и вносит ее в бинарное дерево;
б) обрабатывает этот список и выводит на экран список женатых студентов, упорядоченный по алфавиту.

Программа запускается, но ничего не выводит. Укажите, пожалуйста на ошибки. Похоже, что какие-то траблы с процедурой scantree(это сканирование дерева слева направо), но я никак не разберусь...
Заранее спасибо.

Код:
program lab5_2;
  uses crt;
  type tptr=^tnode;
       dat=record
              day:1..31;
              month:1..12;
              year:integer;
           end;
       student=record
                  fam:string[15];
                  name:string[10];
                  otch:string[15];
                  birth:dat;
                  pol:string[6];
                  math:2..5;
                  status:string[10];
               end;
       tnode=record
                data:student;
                left,right:tptr;
             end;
  var i,n:integer;
      treeroot:tptr;
      s:file of student;
      s1:student;

procedure addtree(var root:tptr; key:student);
begin
  if root=nil then
    begin
      new(root);
      root^.data.fam:=key.fam;
      root^.left:=nil;
      root^.right:=nil;
    end
  else
    if key.fam<root^.data.fam then
      addtree(root^.left,key)
    else
      if key.fam>root^.data.fam then
        addtree(root^.right,key);
end;

procedure scantree(root:tptr);
begin
  if root<>nil then
    begin
      scantree(root^.left);
      if root^.data.status='married' then
        begin
        write(root^.data.fam,' ':11-length(root^.data.fam),root^.data.name,' ':10-length(root^.data.name));
        write(root^.data.otch,' ':15-length(root^.data.otch));
        write(root^.data.birth.day:2,'/',root^.data.birth.month:2,'/',root^.data.birth.year:4,' ');
        writeln(root^.data.pol,' ':8-length(root^.data.pol),root^.data.math,' ':3,root^.data.status);
        end;
      scantree(root^.right);
    end;
end;

begin
  clrscr;
  assign(s,'student1.dat');

  reset(s);

  if (ioresult<>0) or (filesize(s)=0) then
    begin
      write('file not found or empty');
      readln;
      halt;
    end;

  treeroot:=nil;
  n:=filesize(s);
  for i:=1 to n do
    begin
      read(s,s1);
      addtree(treeroot,s1);
    end;

  scantree(treeroot);
  close(s);
  readln;

end.

Прикладываю просмотр самого файла, с записанной информацией.
Изображения
Тип файла: jpg просмотр.JPG (43.6 Кб, 56 просмотров)

Последний раз редактировалось sunny_alice; 12.05.2011 в 23:12.
sunny_alice вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
бинарные деревья с++ Daniya.ru Общие вопросы C/C++ 1 25.11.2010 00:00
Бинарные деревья ZET78 Общие вопросы C/C++ 1 26.09.2010 20:41
Бинарные деревья на Си++ osichev Помощь студентам 1 07.12.2009 23:31
бинарные деревья в c++ eLegAM Помощь студентам 0 21.06.2009 22:12
бинарные деревья. ribka Помощь студентам 2 30.11.2007 18:13