TURBO PASCAL |
Новости
|
такой же длины.
Школьный АЯ алг Замена (арг рез лит Текст, арг лит Слово1, Слово2) дано | длины Слово1 и Слово2 совпадают надо | в строке Текст подстрока Слово1 везде | заменена на подстроку Слово2 нач цел i, DS DS:=длин(Слово1) нц для i от 1 до длин(Текст)-DS+1 если Текст[i : i+DS-1] = Слово1 | если вырезка равна Слово1, то Текст[i : i+DS-1] :=Слово2 | то вырезке присваиваем Слово2 i:=i+DS | и продвигаемся на длину слова все кц кон Для тестовых данных имеем: DS=3, длин (Текст)-DS+1= 8.
Turbo Pascal ( эта программа, использующая стандартную функцию Pos , не требует, чтобы длины заменяемого и вставляемого слов были одинаковыми) Program Replace; Uses Crt; Var Text, Slovo1, Slovo2 : String; i, DlinaSlova, P : Integer; BEGIN ClrScr; Write('Введите строку : '); ReadLn(Text); Write('Какое слово заменить ? '); ReadLn(Slovo1); Write('На какое слово заменить ? '); ReadLn(Slovo2); WriteLn; WriteLn('О т в е т : '); WriteLn('Исходный текст: ', Text); DlinaSlova:=Length(Slovo1); DlinaSlova:=Length(Slovo1); P:=Pos(Slovo1,Text); {номер позиции, с которой в строке Text } {в первый раз встречается подстрока Slovo1 } While P>0 do {цикл продолжается до тех пор,пока подстрока} {Slovo1 встречается в строке Text } begin Delete(Text, P, DlinaSlova); {удаление подстроки Slovo1, начинаю-} {щейся с позиции P, из строки Text } Insert(Slovo2, Text, P); {вставка подстроки Slovo2 } { в строку Text с позиции Р} P:=Pos(Slovo1, Text); {номер позиции, с которой подстрока Slovo1} {встречается в строке Text в очередной раз} end; WriteLn('Новый текст: ', Text); ReadLn END. |
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |