Типизированный файл: база данных аэропортов - 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.
Объяснение кода листинга программы
- Программа представляет собой приложение для работы с базой данных аэропортов и авиакомпаний.
- Используются два типа записей: air_1 и air_2, которые соответствуют структуре данных для авиакомпаний и аэропортов соответственно.
- Переменные acompany и airport используются для хранения данных о компании и аэропорте соответственно.
- Файлы f1 и f2 используются для записи и чтения данных из файлов inf1.lol и inf2.lol соответственно.
- Переменные n и k используются для получения пользовательского ввода и управления циклом чтения и записи данных.
- Если пользователь выбирает 1, то программа открывает файл inf1.lol и запрашивает данные о компании, которые затем записываются в файл.
- Если пользователь выбирает 2, то программа открывает файл inf2.lol и запрашивает данные об аэропорте, которые затем записываются в файл.
- После ввода всех данных, программа предлагает пользователю закончить ввод и сохраняет данные в файле.
- Если пользователь выбирает 1, то программа открывает файл inf1.lol и выводит данные о компаниях в консоль.
- Если пользователь выбирает 2, то программа открывает файл inf2.lol и выводит данные об аэропортах в консоль.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д