Типизированный и текстовый файл - Turbo Pascal
Формулировка задачи:
Задание:
Средствами текстового редактора создать файл. Каждые 5 строк текстового файла содержат соответственно название издательства, фамилию автора, название книги, величину тиража и пустую строку. Программным образом вывести содержимое этого файла на экран, расположив в каждой строке экрана название издательства, фамилию автора, название книги и величину тиража.
Создать первую процедуру с параметрами, в которой каждые 4 строки текстового файла в виде записи с 4 полями размещаются в типизированный файл (5-7 компонентов). Создать вторую процедуру с параметрами для вывода содержимого типизированного файла на экран.
С клавиатуры добавить и типизированный файл запись (записи), используя метод концевого значения. Определить писателей, книги которых напечатаны наибольшим тиражом. Их фамилии занести в конец текстового файла в отдельные строки. Вывести содержимое текстового файла на экран. Далее содержимое каждых 4 строк, содержащих информацию об одном авторе занести в строковую переменную. В полученной строке поменять местами фамилию и тираж и разместить между всеми словами по 3 пробела. Распечатать исходные и преобразованные строки.
Дополнительных массивов не использовать.
_______________________________________
Первый абзац выполнил, второй не полностью, так как вылетает несовместимость типов (закомментировал звездочками место ошибк). Прошу помочь с ошибкой в коде, а также с третьим абзацем.
Код:
Листинг программы
- type
- b1 = record
- Pub,Auth,Book:string[25];
- Value:integer;
- end;
- tfile = file of b1;
- procedure Type_Input(var f11:textfile; var f22:tfile; s1:string; j:integer; zap1:b1);
- var i:integer;
- begin
- assignfile(f11,'file.txt');
- assignfile(f22,'file.dat');
- rewrite(f22);
- reset(f11);
- for i:=1 to 5 do
- with zap1 do
- begin
- readln(f11,s1);
- zap1.Pub:=s1;
- readln(f11,s1);
- zap1.Auth:=s1;
- readln(f11,s1);
- zap1.Book:=s1;
- readln(f11,j);
- zap1.Value:=j;
- if s1='' then
- write(f22);
- write(f22,zap1);
- end;
- end;
- procedure Type_Output(var f22:tfile; s1:string; zap1:b1);
- begin
- assignfile(f22, 'file.dat');
- reset(f22);
- while not eof(f22) do
- begin
- read(f22,s1); {**********}
- with zap1 do begin
- write(Pub,Auth,Book,Value);
- end;
- end;
- closefile(f22);
- end;
- var
- f1:textfile;
- f2:tfile;
- s:string;
- zap:b1;
- k:integer;
- begin
- writeln('Издательство ','Автор ','Название книги ','Тираж');
- writeln('------------------------------------------------------------------------');
- assignfile(f1, 'file.txt');
- reset(f1);
- while not eof(f1) do
- begin
- readln(f1,s);
- write(s);
- write(' ');
- if s='' then
- writeln;
- end;
- closefile(f1);
- writeln;
- Type_Input(f1,f2,s,k,zap);
- Type_Output(f2,s,zap);
- readln;
- end.
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;
Объяснение кода листинга программы
- В первой строке кода объявляются две константы: tName и dName. Они представляют собой имена текстовых файлов, которые будут использоваться в программе.
- Затем объявляется тип данных TBook, который представляет собой типизированный файл книг. Он содержит поля для имени автора (Aut), названия книги (Tit), и количества страниц (Cir).
- Далее объявляется тип данных TBookFile, который представляет собой файл, содержащий записи о книгах типа TBook.
- В процедуре txt2dat происходит конвертация текстовых файлов в формат TBookFile. Для этого используется цикл while, который выполняется до тех пор, пока не будет достигнут конец файла. Внутри цикла каждая запись из текстового файла считывается в переменную t, после чего она записывается в файл TBookFile.
- В процедуре ShowFromTxt происходит отображение содержимого файла TBookFile в текстовый файл. Для этого используется цикл while, который выполняется до тех пор, пока не будет достигнут конец файла. Внутри цикла каждая запись из файла TBookFile считывается в переменную t, после чего она записывается в текстовый файл.
- Конец каждой строки записывается в файл с помощью функции WriteLn. Это позволяет выровнять текст по ширине и добавить пробелы между полями.
- После завершения работы с файлами они закрываются с помощью функций Close.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д