본문 바로가기
Programming/C++

로또 출력하기

by 작은별하나 2019. 11. 28.
반응형

지식인에서 1:1 질문이 들어와서, 답변을 해주었는데, 마감하고 비공개 처리해서, 여기에 글을 남기네요.

 

홍길동이라는 사람이 늘 같은 번호로 로또를 사는데, 

로또에 당첨된 내역을 출력하는 문제입니다.

 

원소스가 너무 엉망이라서 좀 많이 고쳤어요.

 

출력예제

사실 프로그램 자체는 어려울게 없습니다.

배열로 숫자를 그대로 저장하면, 정렬도 안 되어 있고, 로또번호를 검증하는 것 자체가 오래걸리죠.

그리고 보너스 숫자 처리도 귀찮고요.  그래서 일반숫자는 2를, 보너스 숫자는 1을 넣는 방식으로 짜보았습니다.

 

#include<stdio.h>
int main(void) {
	int luck[5][6]= {{1,2,3,4,5,6}, {10,15,25,35,40,42}, {1,9,11,22,23,25},
		{9,28,31,34,35,36}, {1,9,23,28,33,35}}; //홍길동의 로또 숫자
	int w[50]={0,}; //내가 입력할 로또 숫자(당첨 번호)
	int i,n,j,p;
	int c=0;
	const char *result;
	printf("금주의 로또번호를 입력하세요->");
	for(i=1;i<=6;i++){ scanf("%d", &p); w[p]=2; }
	printf("보너스 점수를 입력하세요->");
	scanf("%d",&p); w[p]=1;

	puts("홍길동님의 로또 당첨 결과는 다음과 같습니다.");
	for(i=0;i<5;i++) {
		for(j=0,c=0;j<6;j++) c+=w[luck[i][j]];
		if(c==12) result="1등";
		else if(c==11) result="2등";
		else if(c>=10) result="3등";
		else if(c>=8) result="4등";
		else if(c>=6) result="5등";
		else result="꽝";
		printf("%d세트 번호(", i+1);
		for(j=0;j<6;j++) { printf("%d", luck[i][j]); if(j<5) putchar(' '); }
		printf(")->");
		for(j=0;j<6;j++) {
			if(w[luck[i][j]]+(c==11)>=2) printf("%d", luck[i][j]); else putchar('X'); 
			if(j<5) putchar(' '); 
		}
		printf("(%s)\n",result);
	}
	return 0;
}
728x90

'Programming > C++' 카테고리의 다른 글

리눅스 파이프 예제  (0) 2019.12.25
초성 표시하기  (0) 2014.12.26
마크로를 이용해서 문자열 찍기  (0) 2014.12.02
문자열 처리  (0) 2014.09.26
C++로 문자열 입력받아서 출력 변환하기..  (2) 2014.09.24

댓글