Тип Д25 C2 № 3653 

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