Помощь - Поиск - Пользователи - Календарь
Полная версия: Дана строка символов.Заменить все вхождения символа{ на begin, а каждое вхождение символа}-на end. Решите прогу плиз.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Help
Дана строка символов.Заменить все вхождения символа{ на begin, а каждое вхождение символа}-на end. Решите прогу плиз и если можно блок схему постройте.В долгу не останусь!!!
compiler
у меня получилось так...
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.
не уверен что это оптимальное решение...
алгоритм следующий
1)возле <<{>>/<<}>> добавляем <<begin>>/<<end>>
2)удаляем <<{>>/<<}>>

раскидай по процивдуркам и блок схема готова:)
volvo
А что, нельзя сразу заменять символ на строку и удалять его? unsure.gif

  repeat
p := pos('{', s);
if p > 0 then begin
delete(s, p, 1); insert('begin', s, p);
end;
until p = 0;

Что-то не так? Зачем лишние циклы?
compiler
Цитата(volvo @ 25.12.2007 18:33) *
Что-то не так?
все так:), забыл о существовании delete()...

спасибо, что напомнил...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.