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

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

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

Задание: Средствами текстового редактора создать файл. Каждые 5 строк текстового файла содержат соответственно название издательства, фамилию автора, название книги, величину тиража и пустую строку. Программным образом вывести содержимое этого файла на экран, расположив в каждой строке экрана название издательства, фамилию автора, название книги и величину тиража. Создать первую процедуру с параметрами, в которой каждые 4 строки текстового файла в виде записи с 4 полями размещаются в типизированный файл (5-7 компонентов). Создать вторую процедуру с параметрами для вывода содержимого типизированного файла на экран. С клавиатуры добавить и типизированный файл запись (записи), используя метод концевого значения. Определить писателей, книги которых напечатаны наибольшим тиражом. Их фамилии занести в конец текстового файла в отдельные строки. Вывести содержимое текстового файла на экран. Далее содержимое каждых 4 строк, содержащих информацию об одном авторе занести в строковую переменную. В полученной строке поменять местами фамилию и тираж и разместить между всеми словами по 3 пробела. Распечатать исходные и преобразованные строки. Дополнительных массивов не использовать. _______________________________________ Первый абзац выполнил, второй не полностью, так как вылетает несовместимость типов (закомментировал звездочками место ошибк). Прошу помочь с ошибкой в коде, а также с третьим абзацем. Код:
Листинг программы
  1. type
  2. b1 = record
  3. Pub,Auth,Book:string[25];
  4. Value:integer;
  5. end;
  6. tfile = file of b1;
  7.  
  8. procedure Type_Input(var f11:textfile; var f22:tfile; s1:string; j:integer; zap1:b1);
  9. var i:integer;
  10. begin
  11. assignfile(f11,'file.txt');
  12. assignfile(f22,'file.dat');
  13. rewrite(f22);
  14. reset(f11);
  15. for i:=1 to 5 do
  16. with zap1 do
  17. begin
  18. readln(f11,s1);
  19. zap1.Pub:=s1;
  20. readln(f11,s1);
  21. zap1.Auth:=s1;
  22. readln(f11,s1);
  23. zap1.Book:=s1;
  24. readln(f11,j);
  25. zap1.Value:=j;
  26. if s1='' then
  27. write(f22);
  28. write(f22,zap1);
  29. end;
  30. end;
  31. procedure Type_Output(var f22:tfile; s1:string; zap1:b1);
  32. begin
  33. assignfile(f22, 'file.dat');
  34. reset(f22);
  35. while not eof(f22) do
  36. begin
  37. read(f22,s1); {**********}
  38. with zap1 do begin
  39. write(Pub,Auth,Book,Value);
  40. end;
  41. end;
  42. closefile(f22);
  43. end;
  44.  
  45. var
  46. f1:textfile;
  47. f2:tfile;
  48. s:string;
  49. zap:b1;
  50. k:integer;
  51. begin
  52. writeln('Издательство ','Автор ','Название книги ','Тираж');
  53. writeln('------------------------------------------------------------------------');
  54. assignfile(f1, 'file.txt');
  55. reset(f1);
  56. while not eof(f1) do
  57. begin
  58. readln(f1,s);
  59. write(s);
  60. write(' ');
  61. if s='' then
  62. writeln;
  63. end;
  64. closefile(f1);
  65. writeln;
  66. Type_Input(f1,f2,s,k,zap);
  67. Type_Output(f2,s,zap);
  68.  
  69. readln;
  70. end.
UPD : со вторым абзацем и ошибкой разобрался, но все еще прошу помощи, начиная с добавления.

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

textual
Листинг программы
  1. const
  2.   tName = 'file.txt'; dName = 'file.dat';
  3. type
  4.   TBook = record
  5.     Pub, Aut, Tit: String[31];
  6.     Cir: Integer;
  7.   end;
  8.   TBookFile = file of TBook;
  9.  
  10. procedure txt2dat;
  11. var ft: Text; fd: TBookFile; t: TBook;
  12. begin
  13.   Assign(ft,tName); Assign(fd,dName);
  14.   Reset(ft); Rewrite(fd);
  15.   while not SeekEof(ft) do with t do begin
  16.     ReadLn(ft,Pub);
  17.     ReadLn(ft,Aut);
  18.     ReadLn(ft,Tit);
  19.     ReadLn(ft,Cir);
  20.     ReadLn(ft);
  21.     Write(fd,t);
  22.   end;
  23.   Close(ft); Close(fd);
  24. end;
  25. procedure ShowFromTxt;
  26. var ft: Text; t: TBook;
  27. begin
  28.   Assign(ft,tName);
  29.   Reset(ft);
  30.   while not SeekEof(ft) do with t do begin
  31.     ReadLn(ft,Pub);
  32.     ReadLn(ft,Aut);
  33.     ReadLn(ft,Tit);
  34.     ReadLn(ft,Cir);
  35.     ReadLn(ft);
  36.     WriteLn(Pub,'   ',Aut,'   ',Tit,'   ',Cir);
  37.   end;
  38.   Close(ft);
  39. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы