Опишите на русском языке или одном из языков программирования
алгоритм подсчета максимального количества подряд идущих
совпадающих элементов в целочисленном массиве длины 30.
Показать разбор
Содержание верного ответа и указания к оцениванию
(допускаются иные формулировки ответа, не искажающие его смысла)
Пример правильного описания алгоритма на русском языке.
Заводим переменную для хранения максимального количества
подряд идущих совпадающих элементов и счетчик для
хранения числа элементов в последней группе совпадающих элементов.
Просматривая элементы массива, сравниваем очередной элемент со
следующим за ним. Если значения совпадают, увеличиваем счетчик
на единицу. Если очередной элемент массива оказывается не
равным предыдущему, то сравниваем текущее значение счетчика со
значением переменной если он больше, то заменяем значение
переменной значением счетчика. После сравнения записываем
в счетчик единицу. Так повторяем до конца массива. В конце
работы нужно еще раз сравнить значение счетчика со значением
переменной и переопределить ее, если счетчик больше.
При оценке других вариантов алгоритма решения необходимо
проверить, что поставленная цель достигается.
Пример правильной и эффективной программы (на основе алгоритма,
использующего однократный проход по массиву):
const N = 30;
var a:array[1..N] of integer;
MaxCoin, NumCoin, i: integer;
begin
MaxCoin: = 1;
NumCoin: = 1;
for i:= 2to N dobeginif a[i]=a[i-1] then
NumCoin:=NumCoin+1;
elsebeginif NumCoin> MaxCoin then
MaxCoin:=NumCoin;
NumCoin:=1;
end;
end;
if NumCoin> MaxCoin then
MaxCoin:=NumCoin;
writeln(MaxCoin);
end.
Критерии оценки
2 баллаПредложен правильный алгоритм, выдающий верное значение (в
том числе и алгоритм, требующий двукратного прохода по
массиву). Возможно использование числа 30 вместо константы. Возможно наличие отдельных синтаксических ошибок
(пропущенные «;», неверная запись оператора присваивания и
т.п.), не искажающих замысла автора программы.
1 баллИмеется не более двух ошибок из числа следующих: 1. Не задано начальное значение и/или 2. Не указано или неверно указано условие завершения цикла 3. Программа не выводит результат 4. Индексная переменная в цикле не увеличивается 5. В программе на Паскале неверно расставлены операторные
скобки.
0 балловОшибок, перечисленных выше, больше двух, или алгоритм
сформулирован неверно (в частности, переменная не
приравнивается единице в случае прекращения
последовательности одинаковых элементов или нет проверки
после завершения цикла в варианте решения, аналогичном
предложенному).