기초 함수배열 문제입니다.
강아지
질문 제목 : 기초 함수배열 문제입니다.
10가지 정수를 입력받아 배열에 저장시킨뒤 가장 많이 입력된 수와 그 빈도수를 출력하는 프로그램입니다.
중간에 max=-1; 이 의문입니다.질문 내용 :
#include stdio.h
void cal(int a[10]) ;
void main(void)
{
int a[10], i;
printf(10개의 수(0에서 9까지의 정수)를 입력하세요 : );
for(i=0; i10; i++)
scanf(%d, &a[i]);
cal(a) ;
}
void cal(int a[10])
{
int i, j, max, val, index ;
int check[10] = {0}, num[10] = {0} ;
for(i=0; i10; i++)
{
num[i]=1;
for(j=i+1; j10; j++)
{
if(check[i] ==0)
{ // 중복된 카운트를 방지하기 위함
if(a[i] == a[j])
{
num[i]++ ; // 해당 수를 카운트
check[j] = 1; // 카운트되었음을 의미
}
}
}
}
max = -1;
for(i=0; i10; i++)
{
if(num[i] max)
{
max = num[i] ;
val = a[i] ;
}
}
printf(가장 많이 입력받은 수는 %d, 빈도수는 %d입니다\n, val, max);10가지 정수를 입력받아 배열에 저장시킨뒤 가장 많이 입력된 수와 그 빈도수를 출력하는 프로그램입니다.
여기서 maxr가 -1이면 무조건 if(num[i] max) 을 실행하게 되지 않나요??
아 정말 이해가 안되네요;;
소스가 정말 어려운거 같습니다..
-
목련
아뇨.. 다시 설명하실필요 없으십니다!!
설명 정말 잘해주시네요... 와.. 솔직히 감동먹었습니다.
혹시 강사이신가요?? 정말 고맙습니다~~^^ -
새누
\max \변수 이름부터 가장 큰수를 기억하겠다는 티가 팍팍 나네요~
위에서 max변수는 입력받은 수의 빈도수가 가장큰수가 몇번인지 저장한거 같군요
max변수는 가장 큰 빈도수를 저장하기 위한것이니 최초에 가장작은 값을 갖을 필요가 있어 -1값을 입력한것입니다.
예를 들어보겠습니다.
1이 1번 2가 5번 3이 4번 입력되었다고 해보죠
여기서 max가 하는일은 처음 1이 1번이 입력되었을때 지금까지는 1이 가장 크니
max(-1)값과 1의 -
이퓨리한은지
처음에 -1이지만, for문 처음에 돌때, max가 num[i]로 변하게 되니까, 상관없다고 보여집니다.
처음에 max=-1로 한 이유는 아마도 num[0]이 0이상이라고 가정하고, num[0]에 대한 모든 변수를 참으로 만들기 위해서 -1로 초기화 했다고 보여집니다.