1. 문제
4. 문제 3번을 참고하여 짝수 정수만 랜덤하게 발생시키는 EvenRandom 클래스를 작성하고 EvenRandom 클래스를 이용하여 10개의 짝수를 랜덤하게 출력하는 프로그램을 완성하라. 0도 짝수로 처리한다.
2. 결과
3. 코드
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
class EvenRandom {
public :
EvenRandom() { srand( (unsigned)time(0) ) ;}
int next();
int nextInRange(int a, int b);
};
int EvenRandom::next() {
int n = rand();
while( n % 2 == 1 ) n = rand();
return n;
}
int EvenRandom::nextInRange(int a, int b) {
int n;
n = a + ( rand() % (b-a+1) );
while( n % 2 == 1 ) n = a + ( rand() % (b-a+1) );
return n;
}
int main() {
EvenRandom r;
cout << "-- 0에서 " << RAND_MAX << "까지의 랜덤 정수 10 개--" << endl;
for(int i=0; i<10; i++) {
int n = r.next();
cout << n << ' ';
}
cout << endl << endl << "-- 2에서 " << "10 까지의 랜덤 정수 10 개 --" << endl;
for(int i=0; i<10; i++) {
int n = r.nextInRange(2, 10);
cout << n << ' ';
}
cout << endl;
}
4. 설명
편의상 문제 3번의 코드를 약간씩만 수정하여서 해결하였습니다.
문제 3번과 달리 랜덤한 짝수만을 구하는 것이니
간단히 랜덤한 수를 구하는 함수 rand()를 int형 변수 n의 저장 후
while( n % 2 == 1 )일 경우 즉, 홀수가 나오지 않을 때까지 n = rand();로 랜덤한 수를 구해주면 됩니다.
2~10범위의 랜덤한 짝수일 경우도 while문으로 짝수가 나올 때까지 반복하도록하면 됩니다.
단, 주의하실점은 n = a + ( rand() % (b-a+1) )로 해주셔야 합니다.
'명품 C++ programming' 카테고리의 다른 글
명품 C++ programming 실습문제 3장 6번 (0) | 2019.04.06 |
---|---|
명품 C++ programming 실습문제 3장 5번 (0) | 2019.04.06 |
명품 C++ programming 실습문제 3장 3번 (0) | 2019.04.06 |
명품 C++ programming 실습문제 3장 2번 (0) | 2019.04.06 |
명품 C++ programming 실습문제 3장 1번 (0) | 2019.04.06 |