Неверно считаются значения в функции счета среднего арифметического значения элементов столбца матрицы
Программа должна находить среднее арифметическое значений элементов предпоследнего из столбцов, которые содержат максимальный элемент матрицы. Почему среднее арифметическое некорректно считается, как и сам номер столбца? При вводе любых элементов всегда выводится среднее арифметич = 0. Я подозреваю, что это из-за работы функции поиска номера предпоследнего столбца (в случае невыполнения условий возвращается s=-1), но не могу точно понять, где именно ошибка.
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
void input(int* m, int* n, int a[10][10]) {
printf("Размер матрицы: \n");
scanf("%d%d", m, n);
if(*m<2 || *m>10 || *n>10 || *n<2) {
printf ("Неверный размер \n");
exit(-1);
}
else printf("Значения элементов матрицы: \n");
for (int i=0; i<*m; i++) {
for(int j=0; j<*n; j++) {
printf("a[%d][%d]= ", i, j);
scanf("%d", &a[i][j]);
}
}
}
void output(int m, int n, int a[10][10]) {
printf("Матрица: \n");
for (int i=0; i<m; i++) {
for (int j=0; j<n; j++)
printf ("%d ", a[i][j]);
printf("\n");
}
}
int max(int m, int n, int a[10][10]) { //максимальный элемент массива в столбце
int max = a[0][0];
for (int i=0; i<m; i++) {
for (int j=0; j<n; j++) {
if (a[i][j] > max)
max=a[i][j];
}
}
int count = 0;
int s = -1;
for (int j=n-1; j>=0; j--) {
for (int i = 0; i < m; i++) {
if (a[i][j]==max) {
count++;
if (count==2) {
s=j;
j=n;
}
break;
}
}
}
return s; //s - номер предпоследнего столбца
}
int average (int m, int n, int a[10][10], int max) { //среднее арифметическое
int sum=0, number=0, average;
for (int i=0; i<m; i++) {
sum+=a[i][n];
number++;
}
average=(double)sum/number;
return average;
}
int main() {
setlocale(LC_ALL, "RU");
int m, n, a[10][10];
input (&m, &n, a);
output(m, n, a);
int s=max(m,n,a);
printf("Номер предпоследнего столбца: %d", s);
printf("Cреднее арифметическое значений элементов предпоследнего из столбцов, которые содержат максимальный элемент матрицы: %d \n", average(m, n, a, s));
return 0;
}