удалить из текста стоящие рядом одинаковые буквы.
вот код проги
program del_bukv;
uses crt;
var st:string;i:integer;
Begin
clrscr;
textcolor(11);
writeln('введите слово');
readln(st); i:=1;
for i:=1 to length(st) do
if st[i]=st[i+1] then delete(st,i,2);
writeln(st);
readln
End.
Вся беда в том что, она работает правильно только если 2 одинаковые буквы(
а как сделать для общего случаю я не знаю.
Подскажите пожалуйста
2 мая 2008 в 19:02
А потому, что предыдущий if проверил ближайшие два:
if st[i]=st[i+1] then begin …
2 мая 2008 в 19:02
Спасибо, теперь понял)
2 мая 2008 в 19:00
а почему с третьего?
2 мая 2008 в 18:05
а что делает
j:=2;
while st[i]=st[i+j]do inc(j);
————————————————–
Считает: сколько одинаковых символов подряд стоит в строке. Причём начиная с третьего.
2 мая 2008 в 17:03
спасибо!
а что делает
j:=2;
while st[i]=st[i+j]do inc(j);
пока *какое условие* выполняется?
2 мая 2008 в 17:03
while ((i+j)<=length(st)) and (st[i]=st[i+j]) do inc(j);
2 мая 2008 в 17:01
Вообще-то лучше использовать не строку, а массив символов. А корректировка данной такая:
var st:string;i,j:integer;
Begin
readln(st);i:=1;
while i<length(st)do
if st[i]=st[i+1] then begin
j:=2;
while st[i]=st[i+j]do inc(j);
delete(st,i,j);
end else inc(i);
writeln(st);
End.