Помощь - Поиск - Пользователи - Календарь
Полная версия: База данных в типизированном файле
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
alexmilko
Ребята!!! Требуется помощь!!!! Программу я написал, но в ней есть ошибка(не могу сообразить, как ее исправить). Требуется создать типизированный файл записи, содержащий базу: название страны, ее площадь, число населения. Базу создал, записал в файл 'strani.dat'. Теперь требуется создать новый файл записи из исходного файла - только теперь добавляется новое поле - плотность население(то бишь число население, деленное на площадь страны). Надо скопировать поля в этот новый файл - вот тут и загвоздка - я уверен, что ошибка в тексте,выделенном курсивом. Поделитесь мыслями, нужно срочно доделать.













uses crt;
type
 strani=record
      naz:string[20];
      sq:integer;
      nas:integer;
      end;
 plotnost=record
      naz:string[20];
      sq:integer;
      nas:integer;
      pl:real;
      end;
    var
      i,j,k:integer;
      a:strani;
      b:plotnost;
      f:file of strani;
      f1:file of plotnost;
        begin
        clrscr;
         assign(f,'strani.dat');
         rewrite(f);
         writeln('Введите число записей');readln(k);
           for i:=1 to k do
            begin
             with a do
               begin
                 writeln('Название страны ');readln(naz);
                 writeln('Площадь ');readln(sq);
                 writeln('Число населения ');readln(nas);
                 write(f,a);
               end;
            end;
           close(f);
      assign(f1,'plotnost.dat');
      rewrite(f1);
      reset(f);
      
seek(f,0);
      while not eof(f) do begin
      read(f,a);
      for i:=1 to k-1 do begin
        b.naz:=a.naz;
        b.sq:=a.sq;
        b.nas:=a.nas;
        b.pl:=(a.nas)/(a.sq);
       write(f1,b);
       end;end;
       close(f1);
       close(f);
       reset(f1);
       writeln('Новый файл содержит:');
            seek(f1,0);
             writeln('СТРАНА','ПЛОЩАДЬ':16,'НАСЕЛЕНИЕ':8,'ПЛОТНОСТЬ':18);
              while not eof(f1) do
                begin
                  read(f1,b);
                  with b do
                    writeln(naz:4,sq:15,nas:10,pl:16:2);
                end;
               close(f1);
            readln;
            end.











































Ozzя
   for i:=1 to k do begin
        b.naz:=a.naz;
        b.sq:=a.sq;
        b.nas:=a.nas;
        b.pl:=(a.nas)/(a.sq);
        seek(f1,i-1);
       write(f1,b);
Гость
Цитата(Ozzя @ 7.06.2007 14:24) *

   for i:=1 to k do begin
        b.naz:=a.naz;
        b.sq:=a.sq;
        b.nas:=a.nas;
        b.pl:=(a.nas)/(a.sq);
        seek(f1,i-1);
       write(f1,b);


Оzzя, спасибо за помощь)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.