Вывод содержимого файла в обратном порядке - Turbo Pascal

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

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

Выведите в обратном порядке содержимое всего файла полностью. Для этого считайте файл целиком при помощи метода read(). Примеры входные данные Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Выходные данные .detacilpmoc naht retteb si xelpmoC .xelpmoc naht retteb si elpmiS .ticilpmi naht retteb si ticilpxE .ylgu naht retteb si lufituaeB
Листинг программы
  1. var a:array[1..100] of string;
  2. i,n:integer;
  3. f,k:text;
  4. Begin
  5. n:=0;
  6. assign(f, 'input.txt');
  7. assign(k, 'output.txt');
  8. Reset(f);
  9. Rewrite(k);
  10. While not seekeof(f) do
  11. begin
  12. n:=n+1;
  13. Readln(f,a[n]);
  14. end;
  15. For i:=n downto 1 do
  16. begin
  17. Writeln(k,a[i]);
  18. end;
  19. Close(f);
  20. Close(k);
  21. end
Как не только поменять строчки местами,но и еще выписать все символы в обратном порядке?Спасибо.

Решение задачи: «Вывод содержимого файла в обратном порядке»

textual
Листинг программы
  1. var f, g: file of byte;
  2.     c: byte;
  3.     i, k: longword;
  4. begin
  5.   assign(f, 'c:\input.txt');
  6.   reset(f);
  7.   assign(g, 'c:\output.txt');
  8.   rewrite(g);
  9.   k := filesize(f);
  10.   repeat
  11.     dec(k);
  12.     seek(f, k);
  13.     read(f, c)
  14.   until not (c in [10, 13]);
  15.   for i := k downto 0 do
  16.     begin
  17.       seek(f, i);
  18.       read(f, c);
  19.       if c in [10, 13] then c := c xor 7;
  20.       write(g, c)
  21.     end;
  22.   write(g, 13);
  23.   write(g, 10);
  24.   close(f);
  25.   close(g)
  26. end.

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

  1. В начале кода объявляются переменные: f, g - файлы byte, c - байт, i, k - слова слова LongWord.
  2. Устанавливается путь к файлу ввода 'c:\input.txt' и файлу вывода 'c:\output.txt'.
  3. Переменная g переназначается для файла вывода.
  4. Устанавливается режим записи в файл вывода.
  5. Переменная k инициализируется размером файла ввода.
  6. Запускается цикл, который будет выполняться до тех пор, пока размер файла ввода не станет меньше или равен 0.
  7. В цикле считывается байт из файла ввода, затем проверяется, является ли этот байт одним из символов новой строки (10 или 13). Если это так, то байт заменяется на его XOR 7.
  8. Считанный байт записывается в файл вывода.
  9. Проверяется, если ли еще байты в файле ввода (k > 0), то файл ввода сдвигается назад на k позиций, затем снова считывается байт и записывается в файл вывода.
  10. Когда в файле ввода остается 0 байт, закрываются файлы ввода и вывода.

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


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

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

8   голосов , оценка 3.875 из 5

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

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

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