Найти в массиве наибольший "ровный" участок - C (СИ)
Формулировка задачи:
Задан упорядоченный массив
A [n]
. Необходимо найти в этом массиве наибольший "равнинній" участок, то есть определить такое числоp
, что в массиве последовательности из из равных элементов нет последовательностир+1
равных элементов.Решение задачи: «Найти в массиве наибольший "ровный" участок»
textual
Листинг программы
#include <stdio.h> int MaxPeq(int *A, int n) { int m,i,p; m=0; p=1; for (i=1; i<n; i++) if (A[i]==A[i-1]) { p++; if (p > m) m=p; } else p=1; return m; } int main(int argc, char* argv[]) { int Arr[12]={1,3,4,3,3,6,6,6,6,1,2,2}; printf("%d\n",MaxPeq(Arr,12)); return 0; }
Объяснение кода листинга программы
- В функции
MaxPeq
происходит поиск наибольшегоровного
участка в массивеA
длинойn
. - Переменная
m
инициализируется значением 0, она будет использоваться для хранения текущего размера наибольшегоровного
участка. - Переменная
p
инициализируется значением 1, она будет использоваться для хранения количества элементов в текущемровном
участке. - В цикле
for
проходим по всем элементам массиваA
кроме первого и последнего (i<n). - Если текущий элемент
A[i]
равен предыдущемуA[i-1]
, то увеличиваем значение переменнойp
на 1. - Если значение переменной
p
больше текущего значения переменнойm
, то обновляем значение переменнойm
значениемp
. - Если текущий элемент не равен предыдущему, то сбрасываем значение переменной
p
в 1. - Возвращаем значение переменной
m
из функции. - В функции
main
создаем массивArr
размером 12 и заполняем его значениями для примера. - Вызываем функцию
MaxPeq
с аргументамиArr
и12
, выводим результат на экран. - Возвращаем 0 из функции
main
, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д