26
Объяснение:
a = 23 (дано число a)
выполняем цикл (увеличиваем число a на 5 и проверяем условие число a больше 35, если условие истинно (да) выходим из цикла, если ложное (нет), то повторяем цикл)
a = a + 5 = 23 + 5 = 28
a > 35 (28 > 35, нет)
a = a + 5 = 28 + 5 = 33
a > 35 (33 > 35, нет)
a = a + 5 = 33 + 5 = 38
a > 35 (38 > 35, да)
a = a * 2 = 38 * 2 = 76 (увеличиваем число a в 2 раза)
проверяем условие является ли число a двузначным, если условие истинно (да), то выполняем левую ветку, а правую ветку (ещё один цикл) не трогаем (если условие ложно (нет), то выполняем правую ветку (ещё один цикл), а левую ветку не трогаем)
9 < a < 100 (9 < 76 < 100, да - двузначное)
a = a - 50 = 76 - 50 = 26 (уменьшаем число a на 50)
получаем ответ (больше ничего не делаем)
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)
В программах на других языках ошибочные строки и их исправления аналогичны.
Незначительной опиской, не влияющей на оценку, следует считать отсутствие знаков и служебных слов после содержательной части исправления.