Неверно считаются значения в функции счета среднего арифметического значения элементов столбца матрицы

Программа должна находить среднее арифметическое значений элементов предпоследнего из столбцов, которые содержат максимальный элемент матрицы. Почему среднее арифметическое некорректно считается, как и сам номер столбца? При вводе любых элементов всегда выводится среднее арифметич = 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;
}

Ответы (0 шт):