ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Пример 7.2. Определить, является ли заданное слово "перевёртышем" (слово называется "перевёртышем", если совпадает с собой после переворачивания).Система тестов
Алгоритмический язык алг Перевертыш (арг лит Slovo, рез лит Otvet) надо | Otvet = "Перевертыш", если Slovo совпадает с собой после переворачивания нач цел Dlina, i, лог Flag Dlina:= длин (Slovo) i:=1 Flag:= да нц пока (i<=Dlina/2) и Flag | цикл пока с прерыванием до первой несовпавшей пары букв, если такая имеется в слове Flag:= (Slovo[i]=Slovo[Dlina-i+1]) i:=i+1 Кц если Flag то Otvet:="Перевертыш" иначе Otvet:="Не перевертыш" Все Кон Исполнение алгоритма Обозначения проверяемых условий: (i<=Dlina/2) и Flag => (1) Slovo[i]=Slovo[Dlina-i+1] => (2)
Turbo Pascal Program TurnOver; Uses Crt; Var Slovo: String; Dlina, i: Integer; Flag: Boolean; BEGIN ClrScr; Write('Введите слово: '); ReadLn(Slovo); Dlina:= Length(Slovo); {Сравниваются пары букв: первая буква с последней, вторая буква с предпоследней и т.д.} i:=1; Flag:= TRUE; While (i <= Dlina/2) and Flag do {цикл до первой несовпавшей } begin {пары букв (если такая есть)} Flag:= (Slovo[i]=Slovo[Dlina-i+1]); i:= i+1; end; WriteLn; Write('О т в е т: слово ', Slovo); If Flag then WriteLn(' — перевертыш. ') else WriteLn(' — не перевертыш'); ReadLn; END. Пример 7.3. B заданном тексте одно заданное слово везде заменить на другое заданное слово такой же длины. Тест
Алгоритмический язык алг Замена (арг рез лит Текст, арг лит Слово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 | и продвигаемся на длину слова Все Кц Кон Исполнение алгоритма Обозначение проверяемого условия: Текст[i: i+DS-1] = Слово1 => (1) Для тестовых данных имеем: 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. Не нашли, что искали? Воспользуйтесь поиском:
|