Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

괴발개발 개발하다

[ C언어 ] 로또 프로그램(배열 사용) 본문

C언어

[ C언어 ] 로또 프로그램(배열 사용)

괴발새발개발자 2021. 10. 13. 13:50

1. 코드

/*
컴퓨터가 로또번호를 만든다. 중복되는 숫자는 없게. 
사용자가 6개의 숫자를 입력한다.
결과를 출력해준다. 
*/
#include <stdio.h>
#include <time.h> 

int main(void)
{
	int lotto[45]={0};
	int select[45]={0};
	int i,choice,game=0,count=0,choicecount=0,lottocount=0,playercount=0,matchcount=0,end;
	
	srand((unsigned)time(NULL));
	
			printf("====로또 당첨 기원====\n");
	while(1){
	
		for(i=0;i<6;i++){		//로또 배열에서 임의로 뽑은 배열의 요소에 1을 대입. 
			lotto[rand()%46]=1;
		}
		printf("%d차 시도!\n",game+1); 
		while(choicecount < 6){			//사용자에게서 로또숫자 6개 입력.
			printf("%d번째  번호 입력.",choicecount+1);
			scanf("%d",&choice);
			fflush(stdin); 
			if(choice>46 || choice<1){ //입력오류시 반복 
				printf("\n1에서 45까지의 수를 입력해주세요.\n");
				continue;
			}
			if(select[choice] == 1){ //이미 입력한 숫자인지 체크 
				printf("이미 입력한 숫자입니다.\n");
				continue;
			}
			select[choice] = 1; //입력이 정상이면 해당 배열을 1로 바꾸고 카운트 증가. 
			choicecount++;
		}
		/* 컴퓨터가 고른 배열 확인 
		count = 0;	
		for(i=0;i<46;i++){
			printf("%d",lotto[i]);
		}
		*/
		printf("컴퓨터가 고른 번호는");//컴퓨터 배열에서 1일 요소를 찾아 표시 
	
		for(i=0;i<46;i++){
			if(lotto[i] == 1){
			printf(" %2d",lottocount);
			}
			lottocount++;
		}
		printf("\n");

		printf("당신이 고른 번호는  ");//사용자 배열에서 1인 요소를 찾아 표시 
		for(i=0;i<46;i++){
			if(select[i] == 1){
			printf(" %2d",playercount);
			}
			playercount++;
		}
		printf("\n");
									
		for(i=0;i<46;i++){				//두 배열을 비교해 당첨 결과 확인 
			if(select[i] != lotto[i]){	//틀릴때마다 카운트가 증가. 
			matchcount++;
			}
		}
		game++;
		if(matchcount==0){								//카운트가 0이면 전부 동일하다는 뜻  
			printf("축하합니다! 1등에 당첨되셨습니다.");
			break;
		}else if(matchcount==1){
			printf("축하합니다! 2등에 당첨되셨습니다.");
			break;
		}else if(matchcount==2){
			printf("축하합니다! 3등에 당첨되셨습니다.");
			break;
		}else if(matchcount==3){
			printf("축하합니다! 4등에 당첨되셨습니다.");
			break;
		}else if(matchcount==4){
			printf("축하합니다! 5등에 당첨되셨습니다.");
			break;
		}else if(matchcount==5){
			printf("축하합니다! 1개라도 맞추셨네요.");
			break;
		}else{
			printf("꽝입니다. 그만하시려면 0 입력.\n"); 
			printf("또 도전하시려면 아무 값이나 입력하세요.\n\n");
			scanf("%d",&end);
			if(end ==0){
				break;
			} 
			count=0,choicecount=0,lottocount=0,playercount=0,matchcount=0; //카운트변수 전부 초기화 
			for(i=0;i<46;i++){	//로또 배열 초기화 
			lotto[i] = 0;
			}
			for(i=0;i<46;i++){	//사용자 배열 초기화 
			select[i] = 0;
			}
			continue;
		} 
	}
	return 0;
}

2. 출력화면

====로또 당첨 기원====
1차 시도!
1번째  번호 입력.25
2번째  번호 입력.40
3번째  번호 입력.16
4번째  번호 입력.17
5번째  번호 입력.5
6번째  번호 입력.10
컴퓨터가 고른 번호는  0 13 19 24 27 32
당신이 고른 번호는    5 10 16 17 25 40
꽝입니다. 그만하시려면 0 입력.
또 도전하시려면 아무 값이나 입력하세요.