Контрольные тренировочные задания
(решения)
Часть 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