Дан текстовый файл... - 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.
Объяснение кода листинга программы
- Объявлены переменные: f, g (текстовые файлы), i (байт), nf, ng, s, s1 (строки).
- Пользователю предлагается ввести имя файла для чтения.
- Файл открывается на чтение с помощью функции assign.
- Проверяется результат операции ввода-вывода с помощью IOResult. Если файл не найден, выводится сообщение об ошибке и программа завершается.
- Пользователю предлагается ввести имя файла для записи.
- Файл открывается на запись с помощью функции assign.
- В цикле while с помощью функции eof проверяется, достигнут ли конец файла.
- В каждой итерации цикла считывается строка из файла с помощью функции readln и сохраняется в переменной s.
- В цикле for проверяется каждый символ строки s начиная с конца.
- Если текущий символ не пробел и перед ним пробел или он первый и за ним пробел или он последний, он удаляется из строки с помощью функции delete.
- Удаляются все последовательности из двух или более пробелов с помощью цикла while и функции pos.
- Полученная строка записывается в новый файл с помощью функции writeln.
- Файлы f и g закрываются с помощью функции close.
- Выводится сообщение о перезаписи файла.
- Программа ожидает нажатия клавиши Enter с помощью функции readln.
- Код завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д