Опишите на русском языке или одном из языков программирования алгоритм подсчета среднего значения отрицательных элементов в целочисленном массиве из 30 элементов в предположении, что в нем есть хотя бы один отрицательный элемент.
Решение. Введем целочисленную переменную SumNeg и целочисленную переменную NumNeg, в которые будем заносить соответственно сумму и число отрицательных элементов в просмотренной части массива, и присвоим им значение 0. В цикле до конца массива: проверяем, является ли очередной элемент отрицательным. Если да, то прибавляем его к SumNeg и увеличиваем счетчик NumNeg на единицу. По окончании цикла выводим SumNeg/NumNeg.
Пример правильной и эффективной программы (на основе алгоритма, использующего однократный проход по массиву):
| ПРОГРАММА НА ПАСКАЛЕ | ПРОГРАММА НА БЕЙСИКЕ |
| Const N = 30; var a : array [1..N] of integer; i, k, s : integer;
begin
s:=0; k:=0; for i := 1 to N do readln ( a[i] ); for i := 1 to N do if a[i] < 0 then begin inc (k); s := s + a[i]; end; writeln (s/k) else writeln ( '0' );
end. | N = 30 DIM 1, SumNeg, NumNeg, A (N) AS INTEGER SumNeg=0 NumNeg=0 FOR I = 1 TO N INPUT A(I) FOR I = 1 TO N IF A(I)<0 THEN SumNeg = SumNeg + A(I) NumNeg = NumNeg + 1 ENDIF NEXT I PRINT SumNeg/NumNeg END |
| Критерии оценивания выполнения задания | Баллы |
|---|---|
| Предложен правильный алгоритм, выдающий верное значение. Допускается запись алгоритма на другом языке, использующая аналогичные переменные. В случае, если язык программирования использует типизированные переменные, описания переменных должны быть аналогичны описаниям переменных на естественном языке. Использование нетипизированных или необъявленных переменных возможно только в случае, если это допускается языком программирования, при этом количество переменных и их идентификаторы должны соответствовать условию задачи. В алгоритме, записанном на языке программирования, допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора программы. | 2 |
| В любом варианте решения может присутствовать не более одной ошибки из числа следующих: 1) не инициализируется или неверно инициализируется переменная; 2) при выводе ответа не учитывается, что требуемого числа в массиве может не быть; 3) отсутствует вывод ответа; 4) в сравнении перепутан знак; 5) неверно осуществляется проверка делимости; 6) на делимость проверяется не значение элемента, а его индекс; 7) в сложном условии вместо логической операции «И» используется логическая операция «ИЛИ»; 8) используется переменная, не объявленная в разделе описания переменных; 9) не указано или неверно указано условие завершения цикла; 10) индексная переменная в цикле не меняется (например, в цикле while) или меняется неверно; 11) неверно расставлены операторные скобки | 1 |
| Ошибок, перечисленных в п. 1–11, две или больше, или алгоритм сформулирован неверно | 0 |
| Максимальный балл | 2 |
PDF-версии: 