1. При вводе числа 15 программа выведет число 4.
2. Наименьшие значения A, при которых программа выведет верный ответ, равны 2 и 3.
3. В программе допущена типичная для начинающих программистов ошибка «смещения кадра»: значение переменной K, необходимое при первом выполнении цикла, присваивается до начала цикла, а значение для следующего оборота цикла вычисляется в конце предыдущего оборота. В результате, при завершении цикла K имеет значение больше, чем нужно. Вторая ошибка – неверный шаг изменения K. «Идеальная» программа решения этой задачи должна выглядеть так (приведён пример на языке Бейсик):
DIM A,S,K AS INTEGER
INPUT A
S = 0
K = −1
WHILE S <= A
K = K + 2
S = S + K*(K+1)
WEND
PRINT K
END
Но по условиям задания менять местами строки нельзя, их можно только исправлять. Поэтому, кроме исправления шага, приходится корректировать значение K при выводе. Пример исправления для языка Паскаль:
Первая ошибка:
k := k+1;
Исправленная строка:
k := k+2
Вторая ошибка:
writeln(k)
Исправленная строка:
writeln(k-2)
В программах на других языках ошибочные строки и их исправления аналогичны.
Незначительной опиской, не влияющей на оценку, следует считать отсутствие знаков и служебных слов после содержательной части исправления.
ответ: Вычисление сколько раз введенное число m программа будет делить.
При введении числа 5241, выдаст число 4.
Объяснение кода программы:
(1) Название программы.
Объявление переменных, которые будут в коде.
Выполняется чтение переменной m.
(2) Обнуляем переменную k для последующего суммирования.
(3) Пока M не будет равно 0, программа будет суммировать k следующим образом: 0+1, затем значение k сменится на 1 и будет 1+1 и т.д.
После суммирования по циклу идёт деление m на 10. К примеру, если мы задали число m = 5, то после данной операции число m будет уже 0,5.
Программа снова вернётся к циклу (3) и, если уже m будет равно 0, она напишет, сколько раз пришлось провести операцию деления. Это количество обозначается под переменной k.
A2E16(16) = 1010 0010 1110 0001 0110(2) =
10 100 010 111 000 010 110(2) = 2427026(8)