25 (в 2015 - 25, в 2014 - С2) Решение и комментарии
Содержание верного ответа и указания по оцениванию
(допускаются иные формулировки ответа, не искажающие его смысла)
Паскаль
k:=0;
for i:=1 to N do begin
if (10<=a[i]) and (a[i]<=99) and
((a[i] mod 10 = 9) or (a[i] div 10=9)) then k:=k+1;
end;
writeln(k);
Бейсик
K = 0
FOR I = 1 TO N
IF 10 <=A(I) AND A(i)<=99 AND (A(I) MOD 10=9 OR A(I)\10=9) THEN
K = K + 1
END IF
NEXT I
PRINT K
Си
k=0;
for (i=0; i<N; i++) {
if (10<=a[i] && a[i]<=99 && (a[i]%10==9 || a[i]/10==9)) ++k;
}
printf("% d", k);
Алгоритмический язык
k:=0
нц для i от 1 до N
если 10<=a[i]<=99 и (mod(a[i],10)=9 или div(a[i],10)=9)
то k:=k+1
все
кц
вывод k
Естественный язык
Записываем в переменную k начальное значение, равное 0. В цикле от первого элемента до тридцатого проверяем каждый элемент. Если его значение попадает в диапазон от 10 до 99 и при этом остаток от деления элемента на 10 или целая часть частного от этого деления равны 9, то увеличиваем значение k на 1. Переходим к следующему элементу массива. После завершения цикла выводим значение переменной k.
Указания по оцениванию
Оценка 2 балла:
Предложен правильный алгоритм, выдающий верное значение.
Допускается запись алгоритма на другом языке, использующая аналогичные переменные. В случае если язык программирования использует типизированные переменные, описания переменных должны быть аналогичны описаниям переменных на естественном языке. Использование нетипизированных или необъявленных переменных возможно только в случае, если это допускается языком программирования, при этом количество переменных и их идентификаторы должны соответствовать условию задачи. В алгоритме, записанном на языке программирования, допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора программы
При определении двузначности допускается начинать диапазон не с 10, а с 19, так как в интервале от 10 до 18 нет чисел, содержащих 9. Допускается использование других правильных способов определения двузначности числа (например, с помощью деления на 10 и/или 100).
Оценка 1 балл:
В любом варианте решения может присутствовать не более одной ошибки из числа следующих:
1) Не инициализируется или неверно инициализируется переменная k.
2) Неверно осуществляется проверка двузначности
3) Неверно проверяется наличие в числе цифры 9.
4) Двузначность и наличие 9 проверяется правильно, но комбинированное условие неверно (например, перепутаны операции И и ИЛИ, неверно расставлены скобки в логическом выражении).
5) Вместо значения элемента проверяется его индекс.
6) Неверно осуществляется подсчет количества элементов (например, вместо количества считается сумма)
7) Отсутствует вывод ответа.
8) Используется переменная, не объявленная в разделе описания переменных.
9) Не указано или неверно указано условие завершения цикла.
10) Индексная переменная в цикле не меняется (например, в цикле while) или меняется неверно.
Оценка 0 баллов:
Ошибок, перечисленных в
2 комментария
Нет не нарушили. Внутри цикла for находится только один оператор - оператор readln . А дальше нужно писать нужный алгоритм. В нем могут быть свои циклы. И какие-то операторы вне этих циклов.
По условию задачи надо указать код на месте многоточия, а вы добавили код вне цикла for, т.е. нарушали условие задачи.