Типизированный и текстовый файл - Turbo Pascal

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

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

Задание: Средствами текстового редактора создать файл. Каждые 5 строк текстового файла содержат соответственно название издательства, фамилию автора, название книги, величину тиража и пустую строку. Программным образом вывести содержимое этого файла на экран, расположив в каждой строке экрана название издательства, фамилию автора, название книги и величину тиража. Создать первую процедуру с параметрами, в которой каждые 4 строки текстового файла в виде записи с 4 полями размещаются в типизированный файл (5-7 компонентов). Создать вторую процедуру с параметрами для вывода содержимого типизированного файла на экран. С клавиатуры добавить и типизированный файл запись (записи), используя метод концевого значения. Определить писателей, книги которых напечатаны наибольшим тиражом. Их фамилии занести в конец текстового файла в отдельные строки. Вывести содержимое текстового файла на экран. Далее содержимое каждых 4 строк, содержащих информацию об одном авторе занести в строковую переменную. В полученной строке поменять местами фамилию и тираж и разместить между всеми словами по 3 пробела. Распечатать исходные и преобразованные строки. Дополнительных массивов не использовать. _______________________________________ Первый абзац выполнил, второй не полностью, так как вылетает несовместимость типов (закомментировал звездочками место ошибк). Прошу помочь с ошибкой в коде, а также с третьим абзацем. Код:
UPD : со вторым абзацем и ошибкой разобрался, но все еще прошу помощи, начиная с добавления.

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

textual
Листинг программы
const
  tName = 'file.txt'; dName = 'file.dat';
type
  TBook = record
    Pub, Aut, Tit: String[31];
    Cir: Integer;
  end;
  TBookFile = file of TBook;
 
procedure txt2dat;
var ft: Text; fd: TBookFile; t: TBook;
begin
  Assign(ft,tName); Assign(fd,dName);
  Reset(ft); Rewrite(fd);
  while not SeekEof(ft) do with t do begin
    ReadLn(ft,Pub);
    ReadLn(ft,Aut);
    ReadLn(ft,Tit);
    ReadLn(ft,Cir);
    ReadLn(ft);
    Write(fd,t);
  end;
  Close(ft); Close(fd);
end;
procedure ShowFromTxt;
var ft: Text; t: TBook;
begin
  Assign(ft,tName);
  Reset(ft);
  while not SeekEof(ft) do with t do begin
    ReadLn(ft,Pub);
    ReadLn(ft,Aut);
    ReadLn(ft,Tit);
    ReadLn(ft,Cir);
    ReadLn(ft);
    WriteLn(Pub,'   ',Aut,'   ',Tit,'   ',Cir);
  end;
  Close(ft);
end;

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

  1. В первой строке кода объявляются две константы: tName и dName. Они представляют собой имена текстовых файлов, которые будут использоваться в программе.
  2. Затем объявляется тип данных TBook, который представляет собой типизированный файл книг. Он содержит поля для имени автора (Aut), названия книги (Tit), и количества страниц (Cir).
  3. Далее объявляется тип данных TBookFile, который представляет собой файл, содержащий записи о книгах типа TBook.
  4. В процедуре txt2dat происходит конвертация текстовых файлов в формат TBookFile. Для этого используется цикл while, который выполняется до тех пор, пока не будет достигнут конец файла. Внутри цикла каждая запись из текстового файла считывается в переменную t, после чего она записывается в файл TBookFile.
  5. В процедуре ShowFromTxt происходит отображение содержимого файла TBookFile в текстовый файл. Для этого используется цикл while, который выполняется до тех пор, пока не будет достигнут конец файла. Внутри цикла каждая запись из файла TBookFile считывается в переменную t, после чего она записывается в текстовый файл.
  6. Конец каждой строки записывается в файл с помощью функции WriteLn. Это позволяет выровнять текст по ширине и добавить пробелы между полями.
  7. После завершения работы с файлами они закрываются с помощью функций Close.

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

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