Авторизация

Логин: Пароль:
Регистрация Забыли свой пароль?

Замена в строке

Страницы: 1
Замена в строке
Подскажите как заменить в строке abc на def. Написал, такой код
Код
var s,s1:string; i:integer;
begin
writeln ('Введите строку');
readln (s);
s1:='def';
for i:=1 to length(s) do
if s='abc' then begin delete(s,i,3);
insert(s1,s,i);
end;
write (s);
end.

Но проблема в том что он хотя и заменяет abc на def, но если в строке пишем babc то ничего не происходит.
Зачем снова изобретать велосипед? Есть же функция Replace.
Пользуйтесь
Код
var s,s1:string; i:integer;
begin
writeln ('Введите строку');
readln (s);
s1:='def';
s:=s.Replace('abc',s1);
write (s);
end.
Цитата
Алексей Смирнов пишет:
Зачем снова изобретать велосипед?

Это учебное задание и по условию эту функцию использовать нельзя.
Тогда так
Код
var s,s1:string; i:integer;
begin
writeln ('Введите строку');
readln (s);
s1:='def';
for i:=1 to length(s) do
begin
if(i<length(s)-1)then
if (s[i]='a')and(s[i+1]='b')and(s[i+2]='c') then
begin 
s[i]:='d';
s[i+1]:='e';
s[i+2]:='f';
end;
end;
write (s);
end.
Спасибо. Поправил немного ваш код.
Код
var s:string; i:integer;
begin
writeln ('Введите строку');
readln (s);
for i:=1 to length(s) do begin
if (s[i]='a')and(s[i+1]='b')and(s[i+2]='c') then begin delete(s,i,3);
insert('def',s,i);
end;
end;
writeln (s);
end.
У вас будет выход за границы строки если она заканчивается, например, на "а".
А как это исправить?
достаточно написать так
Код
var s:string; i:integer; 
begin 
writeln ('Введите строку'); 
readln (s); 
for i:=1 to length(s)-2 do begin 
if (s[i]='a')and(s[i+1]='b')and(s[i+2]='c') then begin delete(s,i,3); 
insert('def',s,i); 
end; 
end; 
writeln (s); 
end.
Цитата
Алексей Смирнов пишет:
Зачем снова изобретать велосипед? Есть же функция Replace.

Можно подумать когда Вы учились Вам не давали подобные задания? smile:)
пока ты не доволен жизнью - она проходит...
Страницы: 1
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)