Помощь - Поиск - Пользователи - Календарь
Полная версия: обработка символьной информации
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
футбик
Всем привет. Помогите пожалуйста !help.gif, необходимо все сочетания АВС заменить на ОДЕ, слова разделены пробелами, предложения заканчиваются точкой. Текст вводится с клавиатуры, по желанию можно определить фиксированную длину
Заранее благодарен smile.gif
maksimla
пример напиши
volvo
Можно без примера, но с уточнением: менять все слова АВС на ОДЕ, или именно "сочетания"? Если второе - то зачем информация, что
Цитата
слова разделены пробелами, предложения заканчиваются точкой.
?

P.S. Кстати, это (замена одних слов на другие) выкладывалось на форуме, поищи... Замена сочетаний вообще делается элементарно, Pos + Delete + Insert в помощь...
футбик
заменить нужно сочетания, а с этой штукой: Pos + Delete + Insert , будем разбираться
Спасибо
футбик
в общем есть бок, меняет только 1-ю 'ABC', подскажите пожалуйста.
var
str,st,s : string;
i,z:integer;
begin
read(str);
s:='ABC';
st:='ОДЕ';
z:=pos(s,str);
for i:=1 to length(str) do
begin
delete(str,z,length(s));
insert(st,str,z);
end;
writeln(str);
end.
volvo
Цитата
есть бок, меняет только 1-ю 'ABC'
Причем прогоняет цикл впустую length(s)-1 раз... Обрати внимание: у тебя внутри цикла For ни одно выражение от i не зависит... Странно, не правда? Если ничего не меняется, так зачем гонять цикл несколько раз?

На самом деле все проще:

...
repeat
z := pos(s, str);
if z <> 0 then begin
{ вот тут и меняешь одно на другое }
end;
until z = 0; { <--- больше 'ABC' нет, выходим }
...
Цикл For здесь не нужен вообще...
футбик
volvo спасибо smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.