Тип Д25 C2 № 3641 

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