Поиск строки в которой находится самая длинная серия одинаковых элементов - C (СИ)
Формулировка задачи:
Не могу найти строчку с максимальной серией элементов
Ребят, кто знает в чем ошибка, подскажите пожалуйста до меня никак не доходит
void nomer2(int **v, int b, int c) { int i, j, max =0, imax = 0; int sum = 0; for(i=0;i<b;i++) { for (j=0;j<c;j++) { if(v[i][j] == v[i][j+1]) sum++; else if(sum>max) { imax=i; max=sum; } } } printf ("Stroka v kotoroi nahoditsya samaya dlinnaya seria odinakovih elmentov %d", imax); } int main () { int i, j, b, c,z; printf("* 1. Kolichestvo stolbcov soderjashih nulevoi element *"); printf("* 2. Nomer stroki s samoi dlinnoi seriei odinakovih elementov *"); printf("* 3. Proverka simmetrichnosti matritsi *"); printf("* 4. Pomenyat v kajdoi stroke maximalniy element s elementom glavnoi diagonali *"); scanf("%d", &z); int **v; printf("Kol-vo strok:\n"); scanf("%i",&b); printf("Kol-vo stolbcov:\n"); scanf("%i",&c); v=(int**)calloc(b, sizeof(int)); for(i=0;i<b;i++) { v[i]=(int*)calloc(c, sizeof(int)); } printf("\n Vvedite elementy matrica:\n"); for(i=0;i<b;i++) { for(j=0;j<c;j++) { scanf("%d", &v[i][j]); } printf("\n"); } printf("\n"); switch(z) { case 1: nomer1(v, b, c); break; case 2: nomer2(v, b, c); break; case 3: nomer3(v, b, c); break; case 4: nomer4(v, b, c); break; default: printf("Nevernoe znachenie"); break; } return 0; }
Решение задачи: «Поиск строки в которой находится самая длинная серия одинаковых элементов»
textual
Листинг программы
int cnt = 0; for(i=0;i<b;i++) { for (cnt = 0, j=1;j<c;j++) if(v[i][j-1] == v[i][j]) ++cnt; if(cnt>max) { imax=i; max=cnt; } }
Объяснение кода листинга программы
В данном коде реализована функция для поиска строки, в которой находится самая длинная серия одинаковых элементов.
- Переменная
cnt
инициализируется нулем и используется для подсчета количества одинаковых элементов в строке. - Внешний цикл
for
проходит по всем строкам матрицыv
. - Внутренний цикл
for
проходит по всем элементам текущей строки, начиная с первого элемента и доc
(длины строки минус один). Переменнаяj
инициализируется единицей, чтобы пропустить первый элемент внешней строки при первом проходе внутреннего цикла. - Если текущий элемент равен следующему элементу, то переменная
cnt
увеличивается на единицу. - Если переменная
cnt
становится больше максимального значенияmax
, то обновляются значения переменныхimax
иmax
. Значениеimax
содержит индекс строки с максимальной серией одинаковых элементов, аmax
содержит длину этой серии. - После завершения внутренних циклов во всех строках, функция возвращает значение переменной
imax
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д