![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
root |
![]()
Сообщение
#1
|
Гость ![]() |
Необходимо удалить из введенной строки повторяющиеся 2 раза подряд служебные символы, т.е. если введено "abcd//efg", то в итоге должно быть "abcdefg"
|
![]() ![]() |
trminator |
![]()
Сообщение
#2
|
Четыре квадратика ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: ![]() ![]() ![]() |
А какие символы считать служебными? Есть их полный список?
А то напрашивается тупое решение: Код while pos('//', mystr) <> 0 do delete(mystr, pos('//', mystr), 2) И так для всех "служебных символов". Для простоты можно оформить удаление двух подряд идущих заданных символов в виде процедуры (типа del2('/') ) -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
root |
![]()
Сообщение
#3
|
Гость ![]() |
служебными...имеются в виду все символы на клаве, кроме цифр и букв, пробел - тоже сл. символ. строчка может быть и такая "hfhhf..hfsj//njkhn**" , т.е. не имеет смысла писать код под каждый символ
|
GLuk |
![]()
Сообщение
#4
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот попробуй, это отнюдь не самый лучший вариант:
Код Program DeleteOfficialSymbols; Uses Crt; Const S:String = 'affffb&&&cdefg ..//hheudsloi--((**jksla8ew%%'; Var l:Byte; Begin ClrScr; Randomize; For l:=2 to Length(S)-1 do If (S[l]=S[l+1]) or (S[l-1]=S[l]) then Case Ord(S[l]) of 1..47,58..64,91..96,123..127,176..223,240..254:S[l]:=#255; end; While Pos(#255,S)<>0 do Delete(S,Pos(#255,S),1); WriteLn(S); End. |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 17:10 |