Дан текстовый файл... - Pascal (91411)

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

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

Дан тесктовый файл f. Слова разделены одним или несколькими пробелами. Удалить из файла все однобуквенные слова и лишние пробелы. Результат записать в файл.

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

textual
Листинг программы
uses crt;
var f,g:text;
    i:byte;
    nf,ng,s,s1:string;
begin
clrscr;
write('Имя файла для чтения: ');
readln(nf);
nf:=nf+'.txt';
assign(f,nf);
{$I-} reset(f);  {$I+}
if IOResult <> 0 then
 begin
  writeLn('Файл ',nf,' не найден!');
  writeLn('Работа программы завершена. Нажмите ENTER');
  readln;
  exit;
 end;
write('Имя файла для записи: ');
readln(ng);
ng:=ng+'.txt';
assign(g,ng);
rewrite(g);
while not eof(f) do
 begin
  readln(f,s);{читаем строку}
  for i:=length(s) downto 1 do{идем с конца}
  {если символ не пробел, а перед ним пробел или он первый и за ним пробел или он последний}
  if(s[i]<>' ')and((s[i-1]=' ')or(i=1))and((s[i+1]=' ')or(i=length(s)))
  then delete(s,i,1);{удаляем его}
  while pos('  ',s)>0 do delete(s,pos('  ',s),1);{пока в строке есть 2 пробела подряд,
                                                1 удаляем, в апострафах обязательно 2 пробела}
  writeln(g,s);{пишем в новый файл}
 end;
close(f);
close(g);
write('Файл ',nf,' переписан в файл ',ng);
readln
end.

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

  1. Объявлены переменные: f, g (текстовые файлы), i (байт), nf, ng, s, s1 (строки).
  2. Пользователю предлагается ввести имя файла для чтения.
  3. Файл открывается на чтение с помощью функции assign.
  4. Проверяется результат операции ввода-вывода с помощью IOResult. Если файл не найден, выводится сообщение об ошибке и программа завершается.
  5. Пользователю предлагается ввести имя файла для записи.
  6. Файл открывается на запись с помощью функции assign.
  7. В цикле while с помощью функции eof проверяется, достигнут ли конец файла.
  8. В каждой итерации цикла считывается строка из файла с помощью функции readln и сохраняется в переменной s.
  9. В цикле for проверяется каждый символ строки s начиная с конца.
  10. Если текущий символ не пробел и перед ним пробел или он первый и за ним пробел или он последний, он удаляется из строки с помощью функции delete.
  11. Удаляются все последовательности из двух или более пробелов с помощью цикла while и функции pos.
  12. Полученная строка записывается в новый файл с помощью функции writeln.
  13. Файлы f и g закрываются с помощью функции close.
  14. Выводится сообщение о перезаписи файла.
  15. Программа ожидает нажатия клавиши Enter с помощью функции readln.
  16. Код завершается.

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


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

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

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