Код
program del_prob;
var s:string;
begin
write('Введите строку> ');
readln(s);
while pos(' ',s)<>0 do delete(s,pos(' ',s),1);{выполняем цикл while..do... до тех пор, пока в тексте не останется ни одной комбинации идущих подряд двух пробелов; ищем в тексте 2 пробела и удаляем один из них}
writeln('Обработанная строка> 's);
end.
Сема, вот, что тебе нужно для разбора задачи:
Цитата
While (зарезервированное слово)
---
Оператор цикла While содержит выражение,
которое управляет повторением выполнения
отдельного или составного оператора.
Синтаксис:
While выражение Do оператор
Замечания:
Оператор после Do будет выполняться до тех
пор, пока булево выражением является истинным
(True).
Выражение оценивается до выполнения оператора,
так что если булево выражение с самого начала
было ложным (False), то оператор не будет
выполнен ни разу. (В отличие от оператора
цикла Repeat)
Цитата
Delete (процедура)
---
Удаляет подстроку из строки.
Объявление:
Procedure Delete(Var S : String; Index : Integer; Count : Integer);
Режим:
Windows, Real, Protected
Замечания:
Параметр S - переменная со строковым типом.
Index и Count - целочисленные выражения.
Delete удаляет Count символов из строки S,
начиная с позиции Index. Если значение Index
больше, чем длина S, то никакие символы не
удаляются. Если Count определяет большее
количество символов, чем остается в строке с
позиции Index до конца строки, то удаляется
остаток строки.
Цитата
Pos (функция)
---
Ищет подстроку в строке.
Объявление:
Function Pos(Substr : String; S : String) : Byte;
Режим:
Windows, Real, Protected
Замечания:
Параметры Substr и S - строковые выражения.
Pos ищет первое вхождение строки Substr в
строку S и возвращает целочисленное значение,
которое является индексом первого символа
Substr внутри S. Если строка Substr не
найдена, то Pos возвращает нуль.