Дана строка символов.Заменить все вхождения символа{ на begin, а каждое вхождение символа}-на end. Решите прогу плиз и если можно блок схему постройте.В долгу не останусь!!!
у меня получилось так...
var i, l, j:integer; s :string;не уверен что это оптимальное решение...
begin
readln(s);
l:=length(s);
i:=0;
while i<=l do begin
case s[i] of
'{' :begin insert('begin', s, i); i:=i+5; l:=l+5 end;
'}' :begin insert('end', s, i); i:=i+3; l:=l+3 end;
end;
inc(i);
end;
for i:=length(s) downto 1 do begin
if ((s[i]='{') or (s[i]='}')) then begin
for j:=i to length(s) do
s[j]:=s[j+1];
s:=copy(s, 1, length(s)-1);//убить последний символ
end;
end;
writeln(s);
end.
А что, нельзя сразу заменять символ на строку и удалять его?
repeatЧто-то не так? Зачем лишние циклы?
p := pos('{', s);
if p > 0 then begin
delete(s, p, 1); insert('begin', s, p);
end;
until p = 0;