Основы алгоритмизации и программирования. Часть четвертая. Файловая система Turbo Pascal. Асламова В.С - 18 стр.

UptoLike

35
begin
assign(g,nam); {связывание файловой перемен-
ной с физическим файлом}
rewrite(g); {открытие файла для записи}
vv(z); {ввод одной записи}
while z.zip>0 do begin
write(g,z); {перепись записи в файл}
vv(z)
end;
close(g); {закрытие файла}
end;
procedure app(var g:fil;nam:st);
var z:stadt;n:longint;
begin
assign(g,nam);
reset(g);
n:=filesize(g); {n-число записей в файле}
seek(g,n+1); {установка текущего указателя за
последней записью в файле}
vv(z); {ввод одной записи}
while z.zip>0 do begin
write(g,z); {перепись записи в файл}
vv(z)
end;
close(g); {закрытие
файла}
end;
procedure poisk(var g:fil;nam:st); {выдача сведений о городах-
миллионерах}
var z:stadt;
begin
assign(g,nam);
reset(g);
writeln(Название города :20,Число жителей :20);
while not eof(g) do begin {цикл выполняется, пока не дос-
тигнут конец файла}
read(g,z); {чтение одной записи из файла}
if z.zahl>1e6 then writeln(z.name:20,z.zahl:20)
end;
close(g);
writeln(Нажмите enter);readln;
end;
procedure prosmotr(var g:fil;nam:st); {просмотр файла}
var z:stadt;
begin
36
assign(g,nam);
reset(g);
writeln(Название города :20, Число жителей :20);
while not eof(g) do begin {цикл выполняется
, пока не
достигнут конец файла}
read(g,z); {чтение одной записи из файла}
writeln(z.name:20,z.zahl:20);
writeln(Нажмите enter); readln;
end;
close(g);
writeln(Нажмите enter); readln;
end;
procedure ism(var g:fil;nam:st);
var s,z:stadt;
p:byte; {p=0, если нужная запись не най-
дена, иначе p=1}
x:byte; {x-селектор для выбора}
m:set of byte; {m-множество допустимых значе-
ний x}
u:byte; q:fil;name:st;
begin
m:=[1..3]; name:=c:\new.dat;
assign(g,nam); assign(q,name);
rewrite(q);
reset(g);
writeln(ввод названия города,); readln(s.name);
repeat
writeln(1-для изменения названия города
);
writeln(2-для изменения числа жителей);
writeln(3-для удаления записи о городе из файла);
readln(x);
until x in m; {выход из цикла при правильном
вводе значения х}
u:=0;
while not eof(g) do begin {пока не конец файла}
read(g,z);
if z.name=s.name then begin
u:=1;
case x of
1: begin
writeln(ввод нового названия города);
readln(z.name);
end;
  begin                                                                         assign(g,nam);
      assign(g,nam);                {связывание файловой перемен-               reset(g);
                                    ной с физическим файлом}                    writeln(′Название города ′:20, ′Число жителей ′:20);
       rewrite(g);                  {открытие файла для записи}                 while not eof(g) do begin {цикл выполняется, пока не
       vv(z);                       {ввод одной записи}                                                      достигнут конец файла}
       while z.zip>0 do begin                                                     read(g,z);                 {чтение одной записи из файла}
         write(g,z);                {перепись записи в файл}                      writeln(z.name:20,z.zahl:20);
         vv(z)                                                                    writeln(′Нажмите enter′); readln;
       end;                                                                   end;
       close(g);                    {закрытие файла}                          close(g);
   end;                                                                       writeln(′Нажмите enter′); readln;
procedure app(var g:fil;nam:st);                                           end;
   var z:stadt;n:longint;                                               procedure ism(var g:fil;nam:st);
   begin                                                                   var s,z:stadt;
        assign(g,nam);                                                     p:byte;                           {p=0, если нужная запись не най-
        reset(g);                                                                                            дена, иначе p=1}
        n:=filesize(g);              {n-число записей в файле}             x:byte;                           {x-селектор для выбора}
        seek(g,n+1);                 {установка текущего указателя за      m:set of byte;                    {m-множество допустимых значе-
                                   последней записью в файле}                                                ний x}
        vv(z);                       {ввод одной записи}                   u:byte; q:fil;name:st;
        while z.zip>0 do begin                                             begin
          write(g,z);                {перепись записи в файл}                 m:=[1..3]; name:=′c:\new.dat′;
          vv(z)                                                               assign(g,nam); assign(q,name);
      end;                                                                    rewrite(q);
      close(g);                      {закрытие файла}                         reset(g);
   end;                                                                       writeln(′ввод названия города,′); readln(s.name);
procedure poisk(var g:fil;nam:st); {выдача сведений о городах-                repeat
                                     миллионерах}                             writeln(′1-для изменения названия города′);
   var z:stadt;
                                                                              writeln(′2-для изменения числа жителей′);
   begin
                                                                              writeln(′3-для удаления записи о городе из файла′);
        assign(g,nam);
                                                                              readln(x);
        reset(g);
                                                                              until x in m;                  {выход из цикла при правильном
        writeln(′Название города ′:20,′Число жителей ′:20);
                                                                                                             вводе значения х}
        while not eof(g) do begin {цикл выполняется, пока не дос-
                                                                              u:=0;
                                     тигнут конец файла}
                                                                              while not eof(g) do begin      {пока не конец файла}
          read(g,z);                 {чтение одной записи из файла}
                                                                                  read(g,z);
          if z.zahl>1e6 then writeln(z.name:20,z.zahl:20)
                                                                                  if z.name=s.name then begin
        end;
                                                                                  u:=1;
        close(g);
                                                                                  case x of
        writeln(′Нажмите enter′);readln;                                             1: begin
   end;
                                                                                          writeln(′ввод нового названия города′);
procedure prosmotr(var g:fil;nam:st); {просмотр файла}
                                                                                          readln(z.name);
   var z:stadt;
                                                                                      end;
   begin
                              35                                                                    36