В текстовом файле несколько последовательных одинаковых символов заменить одним - Turbo Pascal

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

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

Используются только последовательные файлы При работе с типизованными файлами, если возможно,не использовать вспомогательные файлы. Предусмотреть вывод содержимого файла на экран. Разбить задачу на подзадачи таким образом, чтобы решение каждой подзадачи описывалось подпрограммой, а основная программа состояла бы из последовательности вызовов подпрограмм.

Решение задачи: «В текстовом файле несколько последовательных одинаковых символов заменить одним»

textual
Листинг программы
procedure prn(s, s1: string);
var f: file of char;
    c: char;
begin
  writeln('---------- ', s1, ' --------');
  writeln;
  assign(f, s);
  reset(f);
  while not eof(f)
    do begin
      read(f, c);
      write(c)
    end;
  close(f);
  writeln
end;
 
function shrink(s: string): boolean;
var f: file of char;
    c1, c2: char;
    p1, p2: longint;
    b: boolean;
begin
  assign(f, s);
  reset(f);
  if filesize(f) < 2
    then shrink := false
    else begin
      p1 := 0;
      p2 := 1;
      repeat
        seek(f, p2);
        read(f, c2);
        seek(f, p1);
        read(f, c1);
        if c1 <> c2
          then begin
            inc(p1);
            write(f, c2)
          end;
          inc(p2);
      until p2 = FileSize(f);
      b := p1 + 1 < p2;
      if b
        then begin
          seek(f, p1 + 1);
          truncate(f)
        end;
      shrink := b;
    end;
  close(f)
end;
 
var fname: string;
 
begin
  fname := 'c:\input.txt';
  prn(fname, 'Исходный файл');
  if shrink(fname)
    then prn(fname, 'Преобразованный файл')
    else writeln('---------- Преобразования файла не потребовалось --------');
  readln
end.

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

  1. В функции prn используется файл f, который представляет собой файл для чтения и записи символов. Переменная s содержит имя исходного файла, а переменная s1 содержит имя преобразованного файла.
  2. Функция prn открывает файл f для чтения и записывает заголовок в исходный файл. Затем она считывает и записывает каждый символ из файла до конца файла.
  3. В функции shrink используется файл f. Переменные c1 и c2 представляют собой два символа, которые были прочитаны из файла. Переменные p1 и p2 представляют собой два указателя на текущие позиции в файле. Переменная b указывает, была ли выполнена операция сжатия.
  4. Функция shrink открывает файл f и проверяет его размер. Если размер файла меньше 2, то функция возвращает false. В противном случае она выполняет цикл, в котором читает два символа из файла, записывает второй символ, если они не совпадают, и затем увеличивает указатели на следующий символ. Если последний символ в файле не совпадает с предыдущим, то она уменьшает размер файла, выполняя команду truncate.
  5. В основной части программы вызывается функция prn для вывода имени исходного файла и имени преобразованного файла. Затем вызывается функция shrink для выполнения сжатия файла. Если сжатие было выполнено, то выводится имя преобразованного файла. В противном случае выводится сообщение о том, что преобразование не потребовалось.

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


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

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

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