Контрольные тренировочные задания
(решения)




Часть 1


Задание 14


Решение примера 1

Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды
заменить (111, 27)
преобразует строку 05111150 в строку 0527150.
Если в строке нет вхождений цепочки v, то выполнение команды заменить (v,w) не меняет эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.

Цикл
    ПОКА условие
        последовательность команд
    КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
    ЕСЛИ условие
       ТО команда1
       ИНАЧЕ команда2
    КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 68 идущих подряд цифр 8? В ответе запишите полученную строку.

НАЧАЛО
ПОКА нашлось (222) ИЛИ нашлось (888)
    ЕСЛИ нашлось (222)
      ТО заменить (222, 8)
      ИНАЧЕ заменить (888, 2)
    КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

Ответ: ___________________________.

Решение.

Программа работает до тех пор, пока в строке есть цепочка цифр 222 или цепочка цифр 888.

Если встречается 222, то заменяем 8.
Если в строке нет цепочки 222, но встречается цепочка 888, то заменяем ее на 2.

В нашей строке 68 идущих подряд цифр 8.

1) меняем первые 888 на 2 и получаем
2 и (65 цифр 8)

2) меняем следующие 888 на 2 и получаем
22 и (62 цифр 8)

3) меняем следующие 888 на 2 и получаем
222 и (59 цифр 8)

4) теперь у нас появилась цепочка 222, поэтому мы должны заменить ее на 8
получаем (60 цифр 8)

Получилось следующее, за 4 шага мы заменили 9 восьмерок на 1 (или удалили 8 восьмерок). Становится понятно, что за каждые 4 шага мы будем удалять по 8 восьмерок.

60-8=52
52-8=44
44-8=36
36-8=28
28-8=20
20-8=12
12-8=4 (останется цепочка 8888)

На последнем шаге заменяем первые 3 восьмерки на 2 и получаем 28.

Ответ: 28

Возврат на страницу    Решение примеров части 1 задание 14



Наверх