1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Бинарное дерево, не получается сохранить и прочитать из файла
Помогите пожалуйста. Все процедуры для огранизации дерева работают. Единственное никак не получается сохранить записи в файл и при повторном запуске их прочитать.
program lab10; uses CRt;
type data =record nomer:integer; F,I,O:string[15]; Ocenki:record math,history,physyc:integer end;end; Treeprt=^tree; tree=record inf:data; left,right:treeprt end; derevo = file of data;
var top: treeprt; z:data; Level,key, n: integer; i, number: integer; tab: derevo;
function AddTree (top:treeprt; newnode:data):treeprt; begin if top=nil then begin new(top); top^.inf:=newnode; top^.left:=nil; top^.right:=nil; end else if top^.inf.ocenki.math>newnode.ocenki.math then top^.left:=addTree(top^.left,newnode) else Top^.right:=addTree(top^.right,newnode); addTree:= top; end;
procedure OrgTree; begin Writeln('procedura organizacii dereva'); writeln('dlay vihoda *'); writeln('========================================='); top:=nil; while true do begin writeln('vvedite Familiu'); readln(z.F);
if z.F='*' then exit; writeln('imay'); readln(z.I); writeln('ot4estvo'); readln(z.O); writeln('vvedite ocenki'); with z.ocenki do readln(math,history,physyc); Top:=addTree(top,z); end; end;
if z.F='*' then exit; writeln('imay'); readln(z.I); writeln('ot4estvo'); readln(z.O); writeln('vvedite ocenki'); with z.ocenki do readln(math,history,physyc); top:=addTree(top,z); end;
procedure prosmotr(top:treeprt); begin
if Top<>nil then begin prosmotr(top^.left); write(tab,top^.inf); with Top^.inf do writeln ('³', F:10,' ³', I:10,' ³ ', O:10,' ³ ',ocenki.math:4,' ³ ',ocenki.history:4,' ³ ',ocenki.physyc:4,' ³'); prosmotr(top^.right); end; end;
procedure Otobr (top:treeprt; Otstup:integer); begin if top<> nil then begin otstup:=otstup+3; otobr(top^.right, otstup); writeln( ' ':otstup, top^.inf.ocenki.math); otobr(top^.left, otstup); end; end;
procedure obhod (top:treePrt); begin reset(tab); if Top<>nil then begin obhod (Top^.Left); read(tab, top^.inf);
obhod (Top^.Right) end end;
procedure nodeCount (top:treeprt;level:integer; var n:integer); begin if (level>=1) and (top<> nil) then begin if Level=1 then n:=n+1; nodeCount(top^.left, level-1, n); nodeCount(top^.right, level-1, n); end; end;