IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Замена пробело, Нужно несколько пробелов заменить одним
Сема
сообщение 12.11.2004 16:33
Сообщение #1


Гость






Нужна помошь знающих людей. Вот задача: В тексте заменить все последовательности идущих подряд пробелов одним пробелом, т. е. "сжать" текст.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 6)
APAL
сообщение 12.11.2004 16:36
Сообщение #2


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


И это уже было...
В чем трудность? Давай выкладывай что уже сделал.


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Сема
сообщение 12.11.2004 16:37
Сообщение #3


Гость






Я незнаю как можно просмотреть текст и искать в нем пробелы.
 К началу страницы 
+ Ответить 
APAL
сообщение 12.11.2004 16:40
Сообщение #4


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Тебя бы в раздел F.A.Q. по строкам отправить...
Вот тебе подсказки:
Если S : String; то к каждому символу можно обращаться S[n]:='A'
Проверка на пробел: If S[n]=' ' then ...
n - целочисленное значение указывает номер символа
Длина строки - Length(S)
Почитай контекстную справку по функции Delete


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.11.2004 16:42
Сообщение #5


Гость






Сема

Подсказка:

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

APAL
lol.gif
Оффтоп: Идем с тобой в ответах "ноздря в ноздрю" :p4:

Сообщение отредактировано: APAL - 12.11.2004 16:48
 К началу страницы 
+ Ответить 
Altair
сообщение 13.11.2004 7:09
Сообщение #6


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цикл устраиваешь, если находишь пробел следующий за пробелом, то удаляешь его процедрура delete) и начинаешь опять просматривать сроку с начала. пока не пройдешь так до конца строки.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Флогримм
сообщение 13.11.2004 17:23
Сообщение #7


Бывалый
***

Группа: Пользователи
Сообщений: 253
Пол: Мужской

Репутация: -  4  +


Код
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 возвращает нуль.


--------------------
Я не буду жить с этой злобой внутри / Я не буду частью смертельной цепи / Я не буду потребителем твоих идей / Я не буду никогда убивать зверей (Unconform)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 18:39
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"