반응형
지식인에서 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 |
댓글