게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C 프로그램 실행 문제..
게시물ID : programmer_15466짧은주소 복사하기
작성자 : 훗날닭집사장
추천 : 0
조회수 : 447회
댓글수 : 7개
등록시간 : 2016/01/15 14:44:22
옵션
  • 본인삭제금지
#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이 뜬다는게 문제에요.
그렇다는 건, 리턴에 문제가 있어서 값이 제대로 전달이 안되는 것 같은데..
 
도움좀 부탁드립니다 ㅠㅠ
 
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호