이름과 기부금을 입력받고, 목록과 평균값 출력. 기부받는 사람수는 제한없음.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void print_str(char **pName, int *pDonation, int nCount);
int setAverage(int *pDonation, int nCount);
void free_(char (*pName)[], int *pDonation, int cnt);
int main(void)
{
int nSize = 5;
int nCount = 0;
char (*pName)[10];
int *pDonation;
int i;
int nAverage = 0;
char szName[10];
int donation;
pName = (char (*)[10])malloc(sizeof(szName)*nSize);
pDonation = (int *)malloc(sizeof(donation)*nSize);
while(1)
{
if(nCount >= nSize )
{
nSize += 5;
pName = (char (*)[10])realloc(pName,sizeof(szName)*nSize);
pDonation = (int *)realloc(pDonation,sizeof(donation)*nSize);
}
else
{
printf("Name (EXIT : end) : ");
gets(szName);
if(strcmp(szName,"end") == 0)break;
printf("Donation : ");
scanf("%d",&donation);
getchar();
strcpy(pName[nCount],szName);
pDonation[nCount] = donation;
nCount++;
}
}
//nCount 는 배열의 마지막인수보다 1 크다.
nAverage = setAverage(pDonation, nCount);
for(i=0;i<nCount;i++)
{
printf("%d. %s : %d\n",i,pName[i],pDonation[i]);
}
printf("Average : %d\n",nAverage);
free_(pName,pDonation,nCount);
return 0;
}
void free_(char (*pName)[10], int *pDonation, int cnt)
{
int i;
for(i=0;i<cnt;i++)
{
free(pName);
free(pDonation);
}
}
int setAverage(int *pDonation, int nCount)
{
int nTotal = 0;
int i;
for(i=0;i<nCount;i++)
{
nTotal = nTotal + pDonation[i];
}
return (int)(nTotal/nCount);
}
댓글 없음:
댓글 쓰기