Определить в массиве длину самого длинного ряда повторяющихся чисел.
Например.
Если массив таков: 2, 4, 4, 4, 8, 8, 9, 12, 12, 14, 16, 16, 85,
то искомое значение равно трем, т.к. самая длинная последовательность повторяющихся чисел состоит из трех четверок.
const M = 20; var arr: array[1..M] of integer; i, n, max, curr: integer; begin randomize; for i := 1 to M do begin arr[i] := random(3) + 1; write(arr[i]:2) end; max := 1; curr := 1; for i := 1 to n - 1 do if arr[i] = arr[i+1] then curr := curr + 1 else begin if curr > max then max := curr; curr := 1; end; if curr > max then max := curr; writeln; writeln (max); readln end.
Данный код не работает так, как надо. Не срабатывает ветка if. Причина не установлена.
Комментарии
Вот , все работает
Размер массива задан как М, n
Размер массива задан как М, n никак не вводится и неизвестно чему равен, однако в алгоритме поиска границы цикла заявлены до n.
ОШИБКА
ПОСЛЕ КОДА:
MAX:=1;
CURR:=1;
ДОБАВИТЬ N:=M; И ВСЕ БУДЕТ РАБОТАТЬ!
Зачем лишнее? Просто в "for i
Зачем лишнее? Просто в "for i := 1 to n - 1 do" вместо "n - 1" поставить "M - 1". И из переменных, кстати, n убрать. И все заработает, и ничего совсем уж лишнего.