Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Пример 7.2. Определить, является ли заданное слово "перевёртышем" (слово называется "перевёртышем", если совпадает с собой после переворачивания).




Система тестов

N теста Данные Результат
  Slovo = ''казак'' Otvet = ''Перевертыш''
  Slovo = ''коза'' Otvet = ''Не перевертыш''

Алгоритмический язык

алг Перевертыш (арг лит 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)

Номер теста i (1) (1) Flag Otvet
    + + -(кц) + + да да да "Перевертыш"
    + -(кц) - да нет "Не перевертыш"

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
''2sinx+siny'' ''sin'' ''cos'' ''2cosx+cosy''

Алгоритмический язык

алг Замена (арг рез лит Текст, арг лит Слово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.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных