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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2011, 15:29   #1
goo
 
Регистрация: 20.02.2011
Сообщений: 7
По умолчанию Запись бинарного дерева в файл

Основные процедуры нужной мне программы я уже написал. Осталось сделать процедуру записывания текущего содержимого памяти в файл и процедуру чтения данных из файла и записывания их в память.

Вот, что я написал, но работает криво:
Код:
{сохранение текущего состояния памяти в файл}
procedure SaveInFile;
begin
  assign(f,'D:\lab10.bin');
  rewrite(f);
  seek(f, 0);
  {while (top <> nil) do}
    write(f, top^.data);
  writeln('Pamyat uspeshno sohranena v fail! Najmite Enter');
  readln;
end;
Код:
{открытие файла}
procedure OpenFile;
begin
  assign(f,'D:\lab10.bin');
  reset(f);
  if (FileSize(f)= 0) then {если файл пустой}
  begin
    writeln('Seichas fail pustoi. Zapolnite ego. Najmite Enter.');
    readln;
    exit;
  end
  else writeln('Fail ne pustoi. Najmite Enter dlya otrkytiya.');
  readln;
  seek(f, 0);
  read(f, l);
  top := nil;
  while not eof(f) do
  begin
    read(f, l);
    top := AddTree(top, l)
  end; 
  close(f);
  writeln('Fail otkryt uspeshno. Najmite Enter.');
  readln;
end;
Буду очень благодарен, если кто добавит пару строчек в эти две процедуры, чтобы они работали правильно (они почти правильно работают).

Вот дополнительные данные для тех, кто может помочь:
Типы и переменные программы:
Код:
type
  anketa = record
            num: string;
            fio: string[15];
            year: integer;
            pol: string[2];
            family: string[10];
            child: integer;
            oklad: integer;
           end;
  TreePtr = ^tree;
  tree = record
          data: anketa;
          left, right: TreePtr;
         end;
var
  top: TreePtr;
  l: anketa;
  level, n, i: integer;
  number: integer;
  f: file of anketa;
Функция добавления листа к дереву (если понадобится при чтении и записи данных ИЗ файла).
Код:
{добавление листа к дереву}
  function AddTree (top: TreePtr; newnode: anketa): TreePtr;
  begin
    if (top = nil) then
    begin
      new(top);
      top^.data := newnode;
      top^.left := nil;
      top^.right := nil;
    end
    else
      if (top^.data.num > newnode.num) then
        top^.left := AddTree(top^.left, newnode)
      else
        top^.right := AddTree(top^.right, newnode);
      AddTree := top;
  end;
goo вне форума Ответить с цитированием
Старый 02.07.2011, 17:47   #2
Redpunk231
Новичок
Джуниор
 
Регистрация: 02.07.2011
Сообщений: 1
По умолчанию

Код:
Program TreeInFile;
type
  PTree=^note;
  note=record
    inf:integer;
    left:PTree;
    right:PTree;
  end;

procedure AddToTree (var Tree:PTree;x:integer); 
{процедура добавления в дерево}
begin
 if Tree=nil then
   begin
     New(Tree);
     Tree^.inf:=x;
     Tree^.left:=nil;
     Tree^.right:=nil;
      exit;
   end;
 if x < Tree^.inf then
     AddToTree(Tree^.left,x)
  else
    AddToTree(Tree^.right,x);
end;

procedure Save_Tree(p:PTree;var T:text);
{процедура сохранения дерева в файл}
	begin
		if p<>nil then
			begin

				Save_Tree(p^.left,T);
				write(T,p^.inf,' ');
				Save_Tree(p^.right,T);

			end;
	end;
var
  root:PTree;
  T:text;
begin
  {......................................}
  {заполняем дерево данными}
  {......................................}
  {затем сохраняем в файл}
  assign(T,'test.txt'); {открываем файл}
  rewrite(T);            {на запись}
  Save_Tree(root,T);
  close(T);
end.

Последний раз редактировалось Stilet; 02.07.2011 в 18:00.
Redpunk231 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Высота бинарного дерева dido171 Помощь студентам 4 02.12.2014 13:30
Запись в массив данных бинарного дерева m9yt Общие вопросы C/C++ 2 14.03.2010 12:49
Высота бинарного дерева m9yt Общие вопросы C/C++ 5 13.03.2010 22:17
Создания бинарного дерева С++ Olya90 Помощь студентам 0 10.06.2009 18:58
создание бинарного дерева zetrix Паскаль, Turbo Pascal, PascalABC.NET 2 30.11.2006 19:32