Помощь - Поиск - Пользователи - Календарь
Полная версия: Повторяющийся символ в строке
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
root
Необходимо удалить из введенной строки повторяющиеся 2 раза подряд служебные символы, т.е. если введено "abcd//efg", то в итоге должно быть "abcdefg"
trminator
А какие символы считать служебными? Есть их полный список?
А то напрашивается тупое решение:
Код

while pos('//', mystr) <> 0 do
 delete(mystr, pos('//', mystr), 2)

И так для всех "служебных символов". Для простоты можно оформить удаление двух подряд идущих заданных символов в виде процедуры (типа del2('/') )
root
служебными...имеются в виду все символы на клаве, кроме цифр и букв, пробел - тоже сл. символ. строчка может быть и такая "hfhhf..hfsj//njkhn**" , т.е. не имеет смысла писать код под каждый символ
GLuk
Вот попробуй, это отнюдь не самый лучший вариант:

Код

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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.