Unit OpenFgr;
interface
uses crt;
type Punct=record x,y,z:longint end;
     NrLine=record n1,n2:integer end;
     Figura=record p:array[0..200]of ^Punct;
                   Ls:array[0..200] of ^NrLine;
                   np,nl:0..maxint;
                   end;
var f:figura;
    h,i,j:integer;
    fl:file of figura;
    fn:string;

procedure ReadFile(fn:string);
Procedure PutInFile(fn:string);

implementation
procedure ReadFile(fn:string);
var fl:text;l:string;c:char;
 begin
  assign(fl,fn);
  reset(fl);
  with f do
  repeat
  l:='';read(fl,c);
  if c='n' then begin
      repeat l:=l+c;read(fl,c);until c='=';
      if l='npunct' THEN begin readln(fl,np);for i:=1 to np do new(p[i]);end;
      if l='nlinie' then begin readln(fl,nl);for i:=1 to nl do new(ls[i]);end;
  end else begin readln(fl,l);l:=c+l;
      if l='puncte'then begin
       while c<>'{' do read(fl,c);
       for i:=1 to np do with p[i]^do readln(fl,x,y,z);
       while c<>'}' do readln(fl,c);
      end;
      if l='linii'then begin
       while c<>'{' do read(fl,c);
       for i:=1 to nl do with ls[i]^do readln(fl,n1,n2);
       while c<>'}' do readln(fl,c);
      end;
{      if l='end' then exit;}
  end;
  until eof(fl);
close(fl);
 end;
Procedure PutInFile(fn:string);
var fl:text;
begin
 assign(fl,fn);
 rewrite(fl);
 with f do begin
   writeln(fl,'npunct=',np);writeln(fl,'nlinie=',nl);
   writeln(fl,'puncte'#13#10'{');
   for i:=1 to np do with p[i]^ do writeln(fl,x,#32,y,#32,z);
   writeln(fl,'}',#13#10,'linii',#13#10,'{');
   for i:=1 to nl do with ls[i]^ do writeln(fl,n1,#32,n2);
   writeln(fl,'}');
 end;
 close(fl);
end;

End.