Обработка строки с удалением лишних пробелов - Free Pascal
Формулировка задачи:
Всем привет.
Прошу помочь со следующей задачей:
Необходимо обработать строку следующим образом:
1) Удалить ВСЕ пробелы до начала первого символа (начало строки)
2) Удалить все лишние (более 1-го пробела) между символами
3) Удалить ВСЕ пробелы после последнего введенного символа (конец строки)
Использовать при этом можно только символьные или текстовые переменные,
операторы While, If, а также маркер конца строки - EOLN.
Для примера основная часть программы для вывода всех символов БЕЗ последнего:
Заранее спасибо.
BEGIN WHILE NOT EOLN DO BEGIN READ(W); IF NOT EOLN THEN WRITE(W) END END.
Решение задачи: «Обработка строки с удалением лишних пробелов»
textual
Листинг программы
var f: text; c: char; begin assign (f, 'output.txt'); rewrite (f); c:=' '; while c=' ' do read (c); write (f, c); while not eoln do begin while (c<>' ') and (not eoln) do begin read (c); if c<>' ' then write (f, c); end; if not eoln then writeln (f, ''); while c=' ' do begin read (c); if (c<>' ') and (not eoln) then write (f, c); end; end; close (f); end.
Объяснение кода листинга программы
- Объявлены две переменные: f и c.
- Переменной f присваивается значение 'output.txt'.
- Файл с указанным именем открывается на запись.
- В цикле while считывается каждый символ из файла до тех пор, пока не встретится символ новой строки или символ пробела.
- Если считанный символ не является пробелом или символом новой строки, он записывается в файл.
- Если после считывания символа новой строки следующий символ является пробелом, он игнорируется.
- Если после считывания символа новой строки следующий символ не является пробелом, он записывается в файл.
- Если после считывания символа новой строки следующий символ является пробелом, он игнорируется.
- Если после считывания символа новой строки следующий символ не является пробелом, он записывается в файл.
- Этот процесс повторяется до тех пор, пока не будет достигнут конец файла.
- Файл закрывается.