Разбор 24 задания ЕГЭ 2017 года по информатике из демоверсии. Это задание из второй части повышенного уровня сложности. Примерное время выполнения задания 30 минут. Максимальный балл за выполнение задания — 3.
Проверяемые элементы содержания:
— умение прочесть фрагмент программы на языке программирования и исправить допущенные ошибки.
Элементы содержания, проверяемые на ЕГЭ:
— основные конструкции языка программирования,
— система программирования.
Задание 24
Дано целое положительное число N, не превосходящее 1000. Необходимо определить, является ли это число степенью числа 3. То есть требуется определить, существует ли такое целое число K, что 3K = N, и вывести это число либо сообщение, что такого числа не существует.
Для решения этой задачи ученик написал программу, но, к сожалению, его программа оказалась неверной. Ниже эта написанная им программа для Вашего удобства приведена на пяти языках программирования.
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 9.
2. Приведите пример числа, при вводе которого приведённая программа напечатает то, что требуется.
3. Найдите в программе все ошибки (их может быть одна или несколько).
Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.
Разбор 24 задания ЕГЭ 2017
1. При вводе числа 9 программа выведет число 1.
2. Примеры чисел, при вводе которых программа выводит корректный ответ: 2, 3. Других чисел нет.
После выполнения программы при любом введённом n значение k будет равно 1 (тело цикла выполнится ровно 1 раз).
В результате программа напечатает либо 1 (если n ≥ 3), либо «Не существует» (в противном случае). Таким образом, программа выводит корректный ответ, только если введено 2 или 3. Для правильного ответа достаточно указать любое из этих чисел.
3. Программа содержит две ошибки:
1) неверное условие цикла;
2) неверное условие при печати результата.
Пример исправления для языка Паскаль:
Первая ошибка:
while k mod 3 = 0 do begin
Исправленная строка:
while n mod 3 = 0 do begin
Вторая ошибка:
if n>0 then
Исправленная строка:
if n=1 then
После исправления первой ошибки в результате выполнения цикла значение переменной n будет равно n0/(3k), где n0 – введённое пользователем значение;
k – максимальный показатель степени, при котором 3k является делителем числа n0. Число n0 является степенью числа 3, если n0 = 3k, т.е. n0/(3k) = 1.
В программах на других языках ошибочные строки и их исправления аналогичны.
Почему выдается значение k=1 в первом задании? Цикл ведь останавливается после 2 итерации.