Автор: root 25.11.2003 14:39
Необходимо удалить из введенной строки повторяющиеся 2 раза подряд служебные символы, т.е. если введено "abcd//efg", то в итоге должно быть "abcdefg"
Автор: trminator 25.11.2003 14:51
А какие символы считать служебными? Есть их полный список?
А то напрашивается тупое решение:
Код
while pos('//', mystr) <> 0 do
delete(mystr, pos('//', mystr), 2)
И так для всех "служебных символов". Для простоты можно оформить удаление двух подряд идущих заданных символов в виде процедуры (типа del2('/') )
Автор: root 25.11.2003 15:02
служебными...имеются в виду все символы на клаве, кроме цифр и букв, пробел - тоже сл. символ. строчка может быть и такая "hfhhf..hfsj//njkhn**" , т.е. не имеет смысла писать код под каждый символ
Автор: GLuk 29.11.2003 15:22
Вот попробуй, это отнюдь не самый лучший вариант:
Код
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.