В текстовом файле несколько последовательных одинаковых символов заменить одним - 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.
Объяснение кода листинга программы
- В функции
prn
используется файлf
, который представляет собой файл для чтения и записи символов. Переменнаяs
содержит имя исходного файла, а переменнаяs1
содержит имя преобразованного файла. - Функция
prn
открывает файлf
для чтения и записывает заголовок в исходный файл. Затем она считывает и записывает каждый символ из файла до конца файла. - В функции
shrink
используется файлf
. Переменныеc1
иc2
представляют собой два символа, которые были прочитаны из файла. Переменныеp1
иp2
представляют собой два указателя на текущие позиции в файле. Переменнаяb
указывает, была ли выполнена операция сжатия. - Функция
shrink
открывает файлf
и проверяет его размер. Если размер файла меньше 2, то функция возвращаетfalse
. В противном случае она выполняет цикл, в котором читает два символа из файла, записывает второй символ, если они не совпадают, и затем увеличивает указатели на следующий символ. Если последний символ в файле не совпадает с предыдущим, то она уменьшает размер файла, выполняя командуtruncate
. - В основной части программы вызывается функция
prn
для вывода имени исходного файла и имени преобразованного файла. Затем вызывается функцияshrink
для выполнения сжатия файла. Если сжатие было выполнено, то выводится имя преобразованного файла. В противном случае выводится сообщение о том, что преобразование не потребовалось.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д