#include <stdio.h>
#define MAXVAL 10
int tablefill(int *, int); // 배열을 입력받아 채울 함수
void averageCnt(int *, int, double); // 배열 원소들 중 평균 이상, 평균 미만 원소의 개수를 구하는 함수
double *tableAvg(int *, int); // 평균을 구하는 함수
int main()
{
int table[MAXVAL];
int n = tablefill(table, MAXVAL);
double *avg = tableAvg(table, n);
printf("테이블 내의 원소의 갯수 : %d\n", n);
printf("평균 : %lf\n", *avg);
averageCnt(table, n, *avg);
return 0;
}
int tablefill(int *t, int max)
{
int count = 0;
for(; count < max; count++)
{
if(scanf("%d", &t[count])!= 1)
{
break;
}
}
return count;
}
void averageCnt(int *t, int n, double avg)
{
int i;
int above = 0;
int below = 0;
for(i = 0; i<n; i++)
{
if(t[i] >= avg)
{
above++;
}
else if(t[i] < avg)
{
below++;
}
}
printf("평균 이상의 원소의 개수 : %d\n", above);
printf("평균 미만의 원소의 개수 : %d\n", below);
}
double *tableAvg(int *t, int n)
{
double r = 0.0;
double s = 0.0;
double *sum = &r;
double *avg = &s;
int i;
for(i = 0; i< n; i++)
{
*sum += t[i];
}
*avg = (double)(*sum / n);
// printf("평균 : %lf\n", *avg);
return (n != 0) ? avg : sum;
}
의도한 프로그램 : 1. 총 10개 (MAXVAL 만큼)의 원소를 입력받아 그 원소들의 배열을 출력
2. 1번 배열의 평균을 구한 다음 평균 이상의 원소가 몇개인지, 평균 미만의 원소가 몇개인지 계산 후 출력
인데.. tableAvg함수 (평균을 구하는 함수입니다) 에서 에러가 났었는데 어떻게 해결은 했습니다만
배열 원소를 입력한 뒤 배열 출력, 배열의 원소들이 몇개인지 카운트하는 것 까진 되는데
평균 이상 원소의 개수, 평균 미만 원소의 개수, 평균이 제대로 출력이 되지 않습니다.
평균 이상 원소의 개수는 무조건 10개로 뜨는 듯 보이고, 평균 미만 원소는 0개, 평균은 0.0개로 출력이 됩니다.
그런데 문제는, 맨 마지막에서 세번째 줄 printf("평균 : %lf\n", *avg);은 제가 실험을 위해 넣은 출력문으로
이 출력문으로 평균을 출력하면 정상적으로 잘 출력이 됩니다.
하지만 메인에서의 출력문으로는 무조건 0.0이 뜬다는게 문제에요.
그렇다는 건, 리턴에 문제가 있어서 값이 제대로 전달이 안되는 것 같은데..
도움좀 부탁드립니다 ㅠㅠ