반응형
지난번에 사용했던 랜덤함수를 사용하여 로또번호를 생성해보도록 하자.
int n[6] = { 0 };
int tmp;
int con = 0;
먼저 변수는 6개의 숫자를 저장할 배열을 생성한다
tmp는 오름차순으로 정렬할 때 임시로 숫자를 저장해 둘 변수이다.
con은 계속 진행할 지 아닌지를 판단하는 변수이다.
srand(time(NULL));
for (int i = 0; i < 6; i++) {
n[i] = rand() % 45 + 1;
for (int j = 0; j < i; j++) {
while (1) {
if (n[j] == n[i]) {
n[i] = rand() % 45 + 1;
}
else break;
}
}
}
다음은 for문을 이용하여 6개의 번호를 차례대로 n배열에 저장한다.
그리고 n 배열에 중복되는것이 있는지 확인하기 위해 다시 for문 안에서 n[i]가 지금까지 생성했던 변수와 같은지 비교한 후 같다면 새로운 값을 저장한다.
for (int i = 0; i < 6; i++) {
for (int j = i + 1; j < 6; j++) {
if (n[i] > n[j]) {
tmp = n[j];
n[j] = n[i];
n[i] = tmp;
}
}
}
그리고 다시 for문을 사용하여 위에서 생성한 배열들을 오름차순으로 정렬한다.
for (int i = 0; i < 6; i++) {
printf("%d ", n[i]);
}
printf("\n");
printf("계속하려면 0 종료는 1 : ");
scanf_s("%d", &con);
printf("\n");
마지막으로 n[0]부터 n[5]까지 반복하며 출력해주면 완성.
전체 코드를 보자.
#include <stdio.h>
#include <time.h>
int main() {
int n[6] = { 0 };
int tmp;
int con = 0;
while (con != 1) {
srand(time(NULL));
for (int i = 0; i < 6; i++) {
n[i] = rand() % 45 + 1;
for (int j = 0; j < i; j++) {
while (1) {
if (n[j] == n[i]) {
n[i] = rand() % 45 + 1;
}
else break;
}
}
}
for (int i = 0; i < 6; i++) {
for (int j = i + 1; j < 6; j++) {
if (n[i] > n[j]) {
tmp = n[j];
n[j] = n[i];
n[i] = tmp;
}
}
}
for (int i = 0; i < 6; i++) {
printf("%d ", n[i]);
}
printf("\n");
printf("계속하려면 0 종료는 1 : ");
scanf_s("%d", &con);
printf("\n");
}
}
틀린 부분이나 궁금한 점이 있다면 댓글에 남겨주세요
반응형
'C > 실습' 카테고리의 다른 글
[C] 랜덤함수를 이용한 가위바위보 게임 (0) | 2021.04.13 |
---|---|
[C] 랜덤함수를 이용하여 숫자맞추기 게임 만들기 (0) | 2021.01.14 |