분류 | 게시판 |
베스트 |
|
유머 |
|
이야기 |
|
이슈 |
|
생활 |
|
취미 |
|
학술 |
|
방송연예 |
|
방송프로그램 |
|
디지털 |
|
스포츠 |
|
야구팀 |
|
게임1 |
|
게임2 |
|
기타 |
|
운영 |
|
임시게시판 |
|
일단 0~98까지의 abc란 이름의 배열을 만들고 랜덤하게 1~100까지의 숫자를 줘서 1개 남는걸 구하는 문제입니다.
그런데 제가 뭘 잘못했는지 랜덤한 숫자가 하나 밖에 나오질 않더군요.(이거 왜그런지 제가 랜드 함수르 잘못쓴건지 좀 봐주세요)
뭐 어찌어찌 하다보니 배열마다 한개씩 들어가긴 하는데, 랜덤하게 생성 된 숫자들이 겹치는 문제가 발생했습니다.
왜 그런지 좀 부탁드립니다;;
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int cnt=0,def[100]={0,};//def배열은 abc배열보다 1 더 큼 전역변수들
int flag(int a);//랜드에서 나온 수가 기존 배열에 있던 수와 겹치는지 검사하는 함수
void main()
{
int abc[99] = {0,};
int i,j;
int start=1,end=100;//1부터 100 사이의 랜덤한 수가 튀어나와야 함
srand(time(NULL));
for(i=0;i<99;i++)
{
cnt++;
abc[i] = rand()%((end-start)+1)+start;
def[i] = abc[i];
if(flag(abc[i]))//flag 함수에서 1이 반환되면 실행
i--;cnt--;
printf("%4d %4d %4d \n", abc[i], def[i],i);
if(i>99)//for문에서 abc 배열이 다 차오르면 실행
{
def[100] = rand()%((end-start)+1)+start;//마지막 남는 수 생성인데....아오 이거 중복검사를;
for(i=0;i<99;i++)//abc를 0~98까지 돌려서 def에 마지막 배열에 있는 수와 검사
{
if(def[100] != abc[i])
j=def[100];
}
break;
}
}
printf("%d",j);
}
int flag(int a)//main의 abc[i]의 수를 받아옴
{
int i;
for(i=0;i<cnt;i++)
{
if(def[i] == a)//중복되면 1을 반환
return 1;
else
return 0;
}
}
죄송합니다. 댓글 작성은 회원만 가능합니다.