로또 시뮬레이션

나의 운을 테스트하기 위해 로또 시뮬레이션을 만들어 보자! 다음 조건에 맞추어 결과화면과 같이 출력이 되도록 프로그램을 작성하십시오.

조건

  • 입력 값은 ‘Y’ 또는 ‘N’을 포함한 그 외의 문자로, 프로그램에서 요구하는 내용을 실행할지 안할지 선택한다.
  • 로또의 번호 범위(LOTTO_MAX)와 로또 1회당 값어치(LOTTO_VALUE) 그리고 로또 1등 당첨금(LOTTO_PRIZE) 상수(#define)으로 설정한다.
  • 로또의 번호는 총 4개로, 번호 4개를 맞추었을 경우, 1등 당첨이다. 또한, 모든 번호는 다른 번째의 번호와 중복될 수 있다.
  • 로또 번호 4개는 난수 값으로 초기화를 시킨 후, 이에 대응하는 구매자(맞추고자 하는) 번호 4개를 같은 범위로 난수 값을 초기화한다.
  • 이후, 대응되는 각 번호끼리 비교하여 같은 값일 경우, 로또 번호 1개를 맞춘 것으로 본다.
  • 사용자 번호는 로또 번호를 모두 맞출 때(1등의 당첨될 때)까지 무한적으로 반복하며, 매 반복마다 몇 번째 시도인지, 사용한 (누적)금액이 얼마인지 출력한다.
  • 예를 들어, 첫 번째 로또 번호는 첫 번째 구매자 번호하고 대응되며, 두 번째 구매자 번호와는 동일한 값이라고해도 다르게 본다.

입력 예

Y
N

출력 예


[결과]
653000원 이득 봤다!ㅎ
계속하려면 아무 키나…

image

Source

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define LOTTO_MAX 10
#define LOTTO_VALUE 1000
#define LOTTO_PRIZE 10000000

int main(void) {
	srand(time(NULL));
	int num;
	bool flag = true;
	int freq = 0;
	char input = 'A';
	printf("로또를 1등 당첨이 될 떄까지 구매하시겠습니까?\n");
	printf("[Y/N or Other keys] > ");

	scanf("%c", &input);

	if (input == 'Y') {
		while (flag) {
			int a = rand() % LOTTO_MAX,
				b = rand() % LOTTO_MAX,
				c = rand() % LOTTO_MAX,
				d = rand() % LOTTO_MAX,
				e = rand() % LOTTO_MAX,
				f = rand() % LOTTO_MAX,
				g = rand() % LOTTO_MAX,
				h = rand() % LOTTO_MAX;
			freq++;
			num = 0;
			printf("[%d번째 시도] = 사용한 금액 %d원\n", freq, LOTTO_VALUE * freq);
			printf("자동 생성기로 돌린 나의 로또 번호는 %d번, %d번, %d번, %d번이다.\n", a, b, c, d);
			if (a == e && b == f && c == g && d == h) {
				printf("> 총 맞춘 번호는 4개이다. 드디어 1등에 당첨되었다..\n");
				flag = false;
			}
			else {
				if (a == e)
					num++;
				if (b == f)
					num++;
				if (c == g)
					num++;
				if (d == h)
					num++;
				printf("> 총 맞춘 번호는 %d개이다. 아직 1등에 당첨되지 못했다.\n", num);
			}
		}
		printf("\n[결과]\n%d원 이득 봤다.\n", LOTTO_PRIZE - LOTTO_VALUE * freq);
	}
	else
		return 0;

	return 0;
}

태그:

카테고리:

업데이트: