-
5. 로또 확률컴퓨터기초/#1 알고리즘 100선 2017. 2. 21. 17:59반응형
#include<stdio.h> #include<stdlib.h> #include<time.h> #define MAXROLL 100000 void make_num(int*, int); int main() { int success_num[7]; int try_num[6]; int i, j, tryout = 0; int match, bonus; int grade[6] = {0,0,0,0,0,0}; srand(time(NULL)); make_num(&success_num, 7); for(tryout = 1; tryout < MAXROLL; tryout++) { match = 0; bonus = 0; make_num(&try_num[0],6); for(i = 0; i < 6; i++) { for(j = 0; j < 6; j++) { if(success_num[i] == try_num[j]) { match++; } } } for(j = 0; j < 6; j++) { if(success_num[7] == try_num[j]) { bonus = 1; break; } } if(match == 6) // 6숫자가 맞을 경우 1등 { grade[0]++; } else if(match == 5 && bonus == 1) // 5숫자와 보너스 숫자가 일치할 경우 2등 { grade[1]++; } else if(match == 5 && bonus == 0) // 5숫자가 일치하고 보너스 숫자가 불일치 3등 { grade[2]++; } else if(match == 4) // 4숫자 일치 4등 { grade[3]++; } else if(match == 3) // 3숫자 일치 5등 { grade[4]++; } else grade[5]++; } for(i = 0; i < 5; i++) printf("%d등 : %d\n", i+1, grade[i]); printf("떨거지 : %d\n", grade[5]); for(i = 0; i < 6; i++) printf("%2d ", success_num[i]); printf("\n\n%d장 샀을 때 금액 비교 ------------------\n", MAXROLL); printf("총사용액 : %d (%d만원)\n", 1000 * MAXROLL, MAXROLL/10); printf("총당첨금 : %d\n", grade[4] * 5000 + grade[3] * 50000 + grade[2] * 1000000 + grade[1] * 50000000 + grade[0] * 3000000000); printf("이익 : %d\n", (grade[4] * 5000 + grade[3] * 50000 + grade[2] * 1000000 + grade[1] * 50000000 + grade[0] * 3000000000) - (1000 * MAXROLL)); //일단 5등 5000, 4등 50000, 3등 백만원, 2등 오천만원, 1등 30억 으로 계산. return 0; } void make_num(int* array, int count) { int i,j,num = 0; for(i = 0; i < count; i++) { num = rand() % 45 + 1; array[i] = num; for(j = 0; j < i; j++) { if(array[j] == array[i]) { i--; break; } } } }
예전에 만들어 놨던 거라 그냥 일단 올려놈
반응형'컴퓨터기초 > #1 알고리즘 100선' 카테고리의 다른 글
6. 아스키코드 표 (0) 2017.02.21 4. 글자 거꾸로 출력 (0) 2017.02.21 3. 피보나치 수열 (0) 2017.02.18 2. 소수 구하기 (0) 2017.02.18 1. 진수 변환 (0) 2017.01.08