안겹치는 숫자 배열~
김예쁨
안겹치는 숫자 배열~이걸 실행해보면 32767번째 까지 출력이 되는데
그이상부터는 숫자가 안나오네요...
int형 데이터 표현이 21억까지로 알고있는데
왜그러는지 궁금합니다.질문 내용 :
#include stdio.h
#include stdlib.h
#include time.h
#define MAX 33000 // MAX 숫자까지 겹치지 않는 숫자 뽑기
int main()
{
int aaa[MAX];
int i, cnt = 0; //cnt는 숫자를 받을 배열의 방번호
int temp;
int j = 0;
srand((unsigned)time(NULL))
do{
temp = rand()%MAX; //temp에 숫자 입력
for(i=0; icnt; i++){ //배열에 입력받은 숫자까지 돌기
if(aaa[i] == temp) //temp에 숫자와 숫자받은 배열까지 겹치는가 조사,겹치면 for문을 빠저나와 다시temp에 함수입력
break;
//temp의숫자와 안
}
if(i==cnt){
aaa[cnt] = temp; //배열에 숫자 입력
cnt++; //cnt 1증가로 방번호 1증가
printf(%d번째 숫자 : %d\n, cnt-1, aaa[j]); //입력받은 숫자 출력(입력받았는지 확인)
j += 1;
}
}while(cntMAX); //배열이 MAX개 이므로 MAX-1까지 입력받다가 MAX가되면 빠저나옴for(i=1; iMAX+1; i++){ //출력
printf(%d\t, aaa[i-1]);
if(i % 10 == 0)
printf(\n);
}
printf(\n);
return 0;
}
-
석죽
캄사합니다
-
길가온
일단은 배열의 초기값을 0으로 초기화를 해야 됩니다.
-
정예
rand() : range 0 to RAND_MAX (32767)
temp = (rand() | (rand() 4))%MAX;