본문 바로가기
C++/c++수업

QQ 중복 제거 하는중 - 간단한 로또 프로그램.

by sj0020 2020. 10. 13.

1. goto 사용

#include<iostream>
#include<cstdlib>
#include<ctime>

using namespace std;
//로또 중복 체크 : 1 ~ 45 중 에서 6개 숫자 랜덤 생성
int main(void)
{
    int lotto[6] = { 0, };
    srand((unsigned int)time(NULL));

    for (int i = 0; i < 6; i++)
    {
    AGAIN:
        int n = rand() % 45 + 1; // 1 ~ 45
        //cout << n << ' ';
        
        if (i == 0) {
            lotto[i] = n;
        }
        else {
            for (int j = 0; j < i; j++) {
                if (n == lotto[j]) {
                    i--;
                    goto AGAIN;
                }
            }
                    lotto[i] = n;
        }
    }
    for (int i : lotto) {
        cout << i << endl;
    }
    return 0;
}

 

2. 

#include<iostream>
#include<cstdlib>
#include<ctime>

using namespace std;
//로또 중복 체크 : 1 ~ 45 중 에서 6개 숫자 랜덤 생성
int main(void) {
    int lotto[6] = { 0, };
    srand((unsigned int)time(NULL));
    for (int i = 0; i < 6; i++) {
        int n = (rand() % 6) + 1; // 1 ~ 45 //6으로 하면 중복 확인이 편하다
        //cout << n << ' ';
        lotto[i] = n;
        for (int j = 0; j < i; j++) {
            if (lotto[i] == lotto[j]) {
                i--;
                break;
                //cout << "if 들어옴" << endl; 
            }
        }
    }
    for (int i : lotto) cout << i << endl;
    return 0;
}

중복제거 -  정렬 알고리즘으로 푸는중 ... 안됨 .........

#include <iostream>
#include <cstdio>
#include <string>
#include <ctime>

using namespace std;

int main() {
	srand((unsigned int)time(NULL));
	int arr[7] = { 0 };
	int num = 0;
	int i = 0;
	//int j = i - 1;
	int a = 0;
	int k = 0;
	arr[0] = 0; // 로또값은 0이 나올 수 없음. 따라서 첫 비교는 무조건 같지 않음 else 로 감
	for (int i = 1; i < 7; i++) 
	{
		int num = rand() % 7 +1;
		arr[i] = num;
		cout << i<<"번째for에서" <<i<<"번지의 값"<<arr[i] << endl;
		int a = i - 1;
		cout << i << "번째a값=" << a << endl;

		for (int j=a; j >= 0; j--) 
		{
			cout << j << "번째j값=" << a << endl;
			if (arr[i] = arr[j]) 
			{
				cout << "중복되어 다시 뽑음" << endl;
				while (1) 
				{
					int num = rand() % 7+1;
					arr[i] = num; 
					
					if (arr[i] != arr[j]) {
						break;
					}
				}
			}
			else 
			{
				//int num = rand() % 6+1;
				arr[i] = num;
				cout << "엘스" << endl;
			}
			
		}
		
	}
	//cout << arr<< endl;

	for (int k = 1; k < 7; k++) {
		cout << arr[k] << endl;
	}
}

rand () %45 +1 // 1~45


int main() {
	int arr[6];
	int num = 0;
	int i = 0;
	int k = 0;

	for (int i = 0; i < 6; i++) {
		int num = rand() % (46);
		arr[i] = num;
		cout << arr[i] << endl;
	}
}

6. 간단한 로또 프로그램.

조건1) 배열을 사용하여 동일한 숫자가 발생하지 않도록 처리. (중복체크 가능하면 중복체크 하고 안되면 안해도 됨)

조건2) 로또 번호를 만들고 배열에 6개의 번호를 생성하여 출력하는 lotto() 함수 작성.

[출처] C언어 함수 (Function) 기본 알고리즘 7번째|작성자 박x신

'C++ > c++수업' 카테고리의 다른 글

cpp class 원넓이, 사각형면적  (0) 2020.10.14
입력받는수의 합을 구하는 프로그램  (0) 2020.10.13
음료수 자동판매기 프로그램  (0) 2020.10.13
for (auto n : aList)  (0) 2020.10.13
배열형태로 동적생성, 삭제  (0) 2020.10.13