Обработка строки с удалением лишних пробелов - 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.

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

  1. Объявлены две переменные: f и c.
  2. Переменной f присваивается значение 'output.txt'.
  3. Файл с указанным именем открывается на запись.
  4. В цикле while считывается каждый символ из файла до тех пор, пока не встретится символ новой строки или символ пробела.
  5. Если считанный символ не является пробелом или символом новой строки, он записывается в файл.
  6. Если после считывания символа новой строки следующий символ является пробелом, он игнорируется.
  7. Если после считывания символа новой строки следующий символ не является пробелом, он записывается в файл.
  8. Если после считывания символа новой строки следующий символ является пробелом, он игнорируется.
  9. Если после считывания символа новой строки следующий символ не является пробелом, он записывается в файл.
  10. Этот процесс повторяется до тех пор, пока не будет достигнут конец файла.
  11. Файл закрывается.

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

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