Помощь - Поиск - Пользователи - Календарь
Полная версия: Замена пробело
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Сема
Нужна помошь знающих людей. Вот задача: В тексте заменить все последовательности идущих подряд пробелов одним пробелом, т. е. "сжать" текст.
APAL
И это уже было...
В чем трудность? Давай выкладывай что уже сделал.
Сема
Я незнаю как можно просмотреть текст и искать в нем пробелы.
APAL
Тебя бы в раздел F.A.Q. по строкам отправить...
Вот тебе подсказки:
Если S : String; то к каждому символу можно обращаться S[n]:='A'
Проверка на пробел: If S[n]=' ' then ...
n - целочисленное значение указывает номер символа
Длина строки - Length(S)
Почитай контекстную справку по функции Delete
volvo
Сема

Подсказка:

Под текстом понимается строка? Если так, то к i-му символу строки S можно обратиться так: s[i]...

APAL
lol.gif
Оффтоп: Идем с тобой в ответах "ноздря в ноздрю" :p4:
Altair
Цикл устраиваешь, если находишь пробел следующий за пробелом, то удаляешь его процедрура delete) и начинаешь опять просматривать сроку с начала. пока не пройдешь так до конца строки.
Флогримм
Код
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 возвращает нуль.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.