2017-11-24 8 views
0

나는 N 열의 평균을 찾고 싶은 다음 함수를 가지고 있지만, M 행을 마친 후에는 averages_days 배열에서 잘못된 입력을받습니다.열 평균 C

int day_max_average(int a[M][N]) { 
    int max = 0, day, i, j, averages_days[N], sum = 0,k=0; 

    for (i = 0; i < M; i++) { 
     for (j = 0; j < N; j++) { 
      sum += a[j][i]; 
      if(j==N-1){ 
       averages_days[k] = sum/N; 
       k++; 
      } 
     } 
     sum = 0; 
    } 

    for (i = 0; i < N; i++) { 
     printf("%d\n\n\n\n\n\n\n", averages_days[i]); 
     if (averages_days[i] >= max) { 
      max = averages_days[i]; 
      day = i + 1; 
     } 
    } 

    printf("H %d (%d.2) \n", day, max); 

    return 0; 
} 
+1

는 아마도 재설정한다'averages_days [K] '에 할당 한 후에 sum'? –

+0

첫 번째'for' 루프에서'k'를'i'로 대체 할 수 있습니다. 그것은 논리를 더 분명하게 만듭니다. 또한, 두 번째'for' 루프에서'N'을'M'으로 대체하십시오. 또한 두 번째'for' 루프를 입력하기 전에 최대 값이'0'보다 작을 수 있으므로'averages_days [0]'을 사용하여'max'를 초기화하십시오. –

+0

몇 가지 예상 결과를 얻을 수 있습니까? –

답변

0

그것의 확인 이제 INT의 day_max_average는 { INT 최대 = 0, 일, I, J, averages_days [N] (a [M] [N] INT)을 합 = 0, K = 0;

for (j = 0; j < N; j++) { 
    for (i = 0; i < M; i++) { 
     sum += a[i][j]; 
    } 

    averages_days[k] = sum/M; 
    sum = 0; 
    k++; 
} 

for (i = 0; i < N; i++) { 
    printf("%d\n", averages_days[i]); 
    if (averages_days[i] >= max) { 
     max = averages_days[i]; 
     day = i + 1; 
    } 
} 

printf(" %d (%d.2) \n", day, max); 

return 0; 

}