C/C++

Си. Подсчитать количество появлений максимального элемента матрицы

Я уже написал код, но у меня не получается реализовать счетчик, который бы считал количество появления максимального элемента матрицы, не могли бы мне помочь?

#include <stdio.h>

#define N 3

#define M 3



int main() {

int arr[3][3], i, j, max;

srand(time(NULL));

for (i=0; i< N; i++) {

for (j=0; j< M; j++) {

arr[i][j] = rand() % 10;

printf(" |%3d| ", arr[i][j]);

}

printf("\n");

}

for (j=0; j< M; j++)

printf(" ----- ");

printf("\n");

for (j=0; j< M; j++) {

max = arr[0][j];

for (i=1; i< N; i++)

if (arr[i][j] > max)

max = arr[i][j];

printf(" %3d ", max);

}

printf("\n");

}
 #include  
#include
#include
#include

#define RAND(min, max) (rand() % ((max) - (min)) + (min))

#define ROWS 12
#define COLS 24

#define LEFT 10
#define RIGHT 100

void fill(int* box) {
if (box != NULL) {
size_t i = 0;
while (i != COLS) {
box[i] = RAND(LEFT, RIGHT);
++i;
}
}
}

void show(int* box, int width) {
if (box != NULL) {
size_t i = 0;
while (i != COLS) {
printf("%*i", width, box[i]);
++i;
}
}
puts("");
}

int max_element(int* box) {
int element = INT_MIN;
if (box != NULL) {
size_t i = 0;
while (i != COLS) {
if (box[i] > element) element = box[i];
++i;
}
}
return element;
}

int count(int* box, int value) {
int cnt = 0;
if (box != NULL) {
size_t i = 0;
while (i != COLS) {
if (box[i] == value) ++cnt;
++i;
}
}
return cnt;
}

int main(void) {
int matrix[ROWS][COLS];
int width = 4;
unsigned cnt = 0U;
int mx;
size_t i;

srand((unsigned)time(NULL));

for (i = 0; i < ROWS; ++i) fill(matrix[i]);

for (i = 0; i < ROWS; ++i) show(matrix[i], width);

mx = max_element(matrix[0]);
for (i = 1; i < ROWS; ++i) {
int next = max_element(matrix[i]);
if (next > mx) mx = next;
}
printf("max value: %i\n", mx);

for (i = 0; i < ROWS; ++i) cnt += count(matrix[i], mx);
printf("count: %u\n", cnt);

return 0;
}
Илья Шпет
Илья Шпет
96 536
Лучший ответ
int count_max = 0;
int max = arr[0][0];
for (int i=0;i<N;i++)
for (int j=0;j<M;j++)
{
if (arr[i][j] > max) {count_max = 1; max = arr[i][j]; continue;}
if (arr[i][j] == max) {count_max++;}
}
//count_max - количество повторений
Антон Цецегов
Антон Цецегов
51 416