본문 바로가기
C++

C++ 예제: rand()/3항 연산자사용하기(22.04.11~22.04.12)

by Luden59 2022. 4. 12.

1. 3~7 사이의, 3과 7를 포함한 랜덤한 숫자를 풀력하는 프로그램을 작성하자.

  • 입력: 없음
  • 처리: 지정한 변수에 랜덤 값을 대입
    • 랜덤 값 예시: 3, 4, 5, 6, 7. 즉 3+0, 3+1, 3+2, 3+3, 3+4이다.
    • 결론적으로 필요한 랜덤 값은 0~4로, 5의 나머지 값이다.
    • 즉, 랜덤 값을 5로 나눈 나머지 값에 +3을 한 수가 문제 조건에 해당하는 수.
  • 출력: 실행 할 때마다 변하는 숫자 하나 출력(즉 변수 사용)

 

//실습1: 3과 7사이의 랜덤한 숫자를 출력하는 프로그램
    cout << "\n##실습1: 3과 7사이의 랜덤한 숫자를 출력하는 프로그램" << endl;
    srand(time(NULL));
    cout << (rand() % 5) + 3 << endl;
//실습1: 3과 7사이의 랜덤한 숫자를 출력하는 프로그램
    int rand_num;
   
    srand(time(NULL));
    rand(); // 0 ~ 3277 % 5 >> 0~4의 값 나옴
    rand_num = 3, 4, 5, 6, 7; // == 3 + 0, 3 + 1, 3 + 2, 3 + 3, 3 + 4; 3은 고정 값. 0~4의 값이 필요.
    rand_num = 3 + rand() % 5;
    
    cout << rand_num << endl;

 

2. 가장 작은 값과 큰 값을 입력 받아서, 그 사이의 임의의 값을 출력하는 프로그램을 작성하자.

  • 입력: 최소/최대 두가지 값.
  • 처리: 가장 큰 값과 가장 작은 수 사이의 랜덤 값 출력
    • 위에와 비슷.
    • 나누는 수는 가능한 랜덤수의 개수. (가장 큰 값 - 가장 작은 값 + 1)
    • 더하는 수는 최소 값. (0~랜덤수의 개수 + 가장 작은 값)
  • 출력: 실행 할 때마다 변하는 숫자 하나 출력(즉 변수 사용)
//실습2: 가장 작은 값과 큰 값을 입력 받아서, 그 사이의 임의의 값을 출력하는 프로그램을 작성하자.
    cout << "\n##실습2: 사용자가 지정한 범위의 랜덤값 출력" << endl;
    int minValue = 0;
    int maxValue = 0;
    cout << "가장 작은 값을 입력해주세요: ";
    cin >> minValue;
    cout << "가장 큰 값을 입력해주세요: ";
    cin >> maxValue;
    cout << (rand() % (maxValue - minValue + 1)) + minValue << endl;
//실습2: 가장 작은 값과 큰 값을 입력 받아서, 그 사이의 임의의 값을 출력하는 프로그램을 작성하자.
    int input_min_number;
    int input_max_number;
    cin >> input_min_number;
    cin >> input_max_number;

    int rand_num = input_min_number + rand() % (input_max_number - input_min_number + 1);//최소값에 해당 범위의 숫자의 개수

    cout << rand_num << endl;

 

2. 1 ~ 9 사이의 랜덤 숫자 맞추기

  • 사용자에게 수를 입력받고, 해당 수와 1~9사이 랜덤 숫자를 비교하여 맞으면 true, 아니면 false
  • 입력: 사용자가 입력한 랜덤 수
  • 처리: 랜덤수를 생성하고 비교
    • 앞에 예제를 참고하여 랜덤 값을 생성한다.
  • 출력: true/false 출력
    • 3항 연산자 사용. (랜덤수와 입력 값이 같은가?) ? true: false;
cout << "\n##실습3: 1 ~ 9 사이의 랜덤 숫자 맞추기" << endl;
    int answer = (rand() % 9) + 1;
    int userInput = 0;
    cout << "예상하는 값을 입력해주세요(1~9): ";
    cin >> userInput;
    cout << boolalpha << (userInput == answer) << endl;
    (userInput == answer) ? cout << "true" << endl : cout << "false" << endl;

 

    int correct_number;
    correct_number = (rand() % 9) + 1;
    //cout << "미리보는 정답: " << correct_number << endl;//테스트용

    int input_quiz_number;
    cin >> input_quiz_number;

    (input_quiz_number == correct_number) ? cout << "true" << endl : cout << "false" << endl;