var
s: string;
k, i: integer;
f, h: text;
begin
assign(f,'input.txt');
reset(f);
read(f,s);
k:=0;
i:=0;
while i<>Length(s) do
begin
if s='*' then
begin
inc(k);
if k mod 2<>0 then
begin
delete(s,i,1);
dec(i);
end;
end;
inc(i);
end;
assign(h,'out.txt');
rewrite(h);
write(h,s);
close(h);
close(f);
end.
Работа со строками (Pascal)
у меня получилось:
Код:
у меня только удаляется нечетный символ *.
Подскажите, как повторить каждый символ, предшествующий *??
Заранее спасибо!
Код:
if k mod 2<>0 then
begin
[COLOR="Blue"] s := s[i-1];[/COLOR]
end;
end;
begin
[COLOR="Blue"] s := s[i-1];[/COLOR]
end;
end;
естественно i>=1;
(i символ - это веди и есть *?)
что бы вставить символ использовать insert?
вместо delete - insert
Цитата: ApokALEXIS
а так просто нельзя?
вместо delete - insert
вместо delete - insert
вот как должен выглядеть теперь цикл:
Код:
i:=1; //начинаем с 1
while i<=Length(s) do //i может равняться последнему символу
begin
if s='*' then
begin
inc(k);
if k mod 2<>0 then
begin
st:=copy(s,i-1,1); //копировали
delete(s,i,1); //удалили
insert(st,s,i); //вставили, теперь значение i тут монижать не надо
end;
end;
inc(i); //изменяем i только здесь
end;
while i<=Length(s) do //i может равняться последнему символу
begin
if s='*' then
begin
inc(k);
if k mod 2<>0 then
begin
st:=copy(s,i-1,1); //копировали
delete(s,i,1); //удалили
insert(st,s,i); //вставили, теперь значение i тут монижать не надо
end;
end;
inc(i); //изменяем i только здесь
end;