Типизированный файл: база данных аэропортов - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Добрый вечер! Необходимо в типизированный файл ввести информацию типа запись, но программа выдает ошибку "Can't use readln or writeln on typed file". В чем проблема?
uses crt;
type air=record
        name: string[40];
        workers: word;
end;
 
var acompany: air;
    f: file of air;
begin
 assign (f, 'inf.lol');
 rewrite (f);
 with acompany do
  begin
   writeln('Название аэропорта');
   readln(f, name);
   writeln('Количество работников');
   readln(f, workers);
   close(f);
   writeln('Аэропорт:',name,' Люди:',workers);
  end;
readkey;
end.

Решение задачи: «Типизированный файл: база данных аэропортов»

textual
Листинг программы
uses crt;
const empty='**********';
type air_1=record
        names, code, base, workers: string;
end;
     air_2=record
        base, count, planes : string;
end;
var acompany: air_1;
    airport: air_2;
    f1: file of air_1;
    f2: file of air_2;
    n, k: 1..2;
 
begin
 clrscr;
 writeln;
 writeln('Добро пожаловать в программу "Аэропорт" !');
 writeln('Нажмите любую клавишу.');
 writeln;
 readkey;
 writeln('1. Файл авиакомпаний.');
 writeln('2. Файл аэропортов.');
 writeln('Выберите файл для записи (нажмите 1 или 2): ');
 read(n);
 writeln;
 If n=1 then
 begin
  assign (f1, 'inf1.lol');
  writeln('Очистить предыдущий файл?');
  writeln('1. Да.');
  writeln('2. Нет.');
  read(n);
  writeln;
  if n=1 then rewrite (f1)
  else
  begin
   reset (f1);
   seek (f1, filesize(f1));
  end;
  with acompany do
  begin
   k:=2;
   while k=2 do
   begin
    writeln('Название компании:');
    readln(names);
    if length(names)=0 then names:=empty;
    writeln('Код компании:');
    readln(code);
    if length(code)=0 then code:=empty;
    writeln('Название аэропорта:');
    readln(base);
    if length(base)=0 then base:=empty;
    writeln('Количество работников:');
    readln(workers);
    if length(workers)=0 then workers:=empty;
    write(f1, acompany);
    writeln;
    writeln('Закончить ввод?');
    writeln('1. Да.');
    writeln('2. Нет.');
    read(k);
    writeln;
   end;
  end;
  close(f1);
  reset(f1);
  while not eof(f1) do
   begin
    read(f1, acompany);
    writeln('Название аэропорта:',acompany.base);
   end;
  readkey;
 end
 else
 
 begin
  assign (f2, 'inf2.lol');
  writeln('Очистить предыдущий файл?');
  writeln('1. Да.');
  writeln('2. Нет.');
  read(n);
  writeln;
  if n=1 then rewrite (f2)
  else
  begin
   reset (f2);
   seek (f2, filesize(f2));
  end;
  with airport do
   begin
    k:=2;
    while k=2 do
    begin
     writeln('Название аэропорта');
     readln(base);
     if length(base)=0 then base:=empty;
     writeln('Количество полос');
     readln(count);
     if length(count)=0 then count:=empty;
     writeln('Количество самолетов');
     readln(planes);
     if length(planes)=0 then planes:=empty;
     write(f2, airport);
     writeln;
     writeln('Закончить ввод?');
     writeln('1. Да.');
     writeln('2. Нет.');
     read(k);
     writeln;
    end;
   end;
  close(f2);
  reset(f2);
  while not eof(f2) do
   begin
    read(f2, airport);
    writeln('Название аэропорта:',airport.count);
   end;
  readkey;
 end;
end.

Объяснение кода листинга программы

  1. Программа представляет собой приложение для работы с базой данных аэропортов и авиакомпаний.
  2. Используются два типа записей: air_1 и air_2, которые соответствуют структуре данных для авиакомпаний и аэропортов соответственно.
  3. Переменные acompany и airport используются для хранения данных о компании и аэропорте соответственно.
  4. Файлы f1 и f2 используются для записи и чтения данных из файлов inf1.lol и inf2.lol соответственно.
  5. Переменные n и k используются для получения пользовательского ввода и управления циклом чтения и записи данных.
  6. Если пользователь выбирает 1, то программа открывает файл inf1.lol и запрашивает данные о компании, которые затем записываются в файл.
  7. Если пользователь выбирает 2, то программа открывает файл inf2.lol и запрашивает данные об аэропорте, которые затем записываются в файл.
  8. После ввода всех данных, программа предлагает пользователю закончить ввод и сохраняет данные в файле.
  9. Если пользователь выбирает 1, то программа открывает файл inf1.lol и выводит данные о компаниях в консоль.
  10. Если пользователь выбирает 2, то программа открывает файл inf2.lol и выводит данные об аэропортах в консоль.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы