Контрольные тренировочные задания
(решения)
Часть 1
Задание 14
Решение примера 2
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды
заменить (111, 27)
преобразует строку 05111150 в строку 0527150.
Если в строке нет вхождений цепочки v, то выполнение команды
заменить (v, w) не меняет эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 69 идущих подряд цифр 8? В ответе запишите полученную строку.
НАЧАЛО
ПОКА нашлось (3333) ИЛИ нашлось (8888)
ЕСЛИ нашлось (3333)
ТО заменить (3333, 88)
ИНАЧЕ заменить (8888, 33)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Ответ: ___________________________.
Решение.
Программа будет работать до тех пор, пока в строке есть цепочка цифр 3333 или цепочка цифр 8888.
Если в строке встречается 3333, то заменяем на 88.
Если в строке нет цепочки 3333, но встречается цепочка 8888, то заменяем ее на 33.
Наша строка состоит из 69 идущих подряд цифр 8.
1) меняем первые 8888 на 33 и получаем
33 и (65 цифр 8)
2) меняем следующие 8888 на 33 и получаем
3333 и (61 цифру 8)
3) теперь у нас появилась цепочка 3333, поэтому мы должны заменить ее на 88
получаем строку состоящую из 63 цифр 8
Анализируем что произошло!
А получилось следующее, за 3 шага мы заменили 8 восьмерок на 2 (или удалили 6 восьмерок из нашей строки).
Становится понятно, что за каждые 3 шага мы будем удалять по 6 восьмерок.
63-6=57
57-6=51
51-6=45
45-6=39
39-6=33
33-6=27
27-6=21
21-6=15
15-6=9
9-6=3 останется строка состоящая из 3 идущих подряд 8 (888)
Ответ: 888
Возврат на страницу Решение примеров части 1 задание 14