-
명품 C++ 3장 7번C++ 2018. 10. 28. 15:25
7. 문제 5번을 참고하여 생성자를 이용하여 짝수 홀수를 선택할 수 있도록 SelectableRandom 클래스를 작성하고 짝수 10개, 홀수 10개를 랜덤하게 발생시키는 프로그램을 작성하라.
소스코드
#include <iostream>#include <cstdlib>#include <ctime>using namespace std;class SelectableRandom {int sw;public:SelectableRandom(int sw);int next();int nextInRange(int a, int b);};SelectableRandom::SelectableRandom(int sw) {this->sw = sw; //짝수인지 홀수인지 판별하는 변수srand((unsigned)time(0));}int SelectableRandom::next() {if (sw == 0) {for (;;) {int k = rand();if (k % 2 == 0) { //짝수return k;break;}}}else {for (;;) {int k = rand();if (k % 2 != 0) { //홀수return k;break;}}}}int SelectableRandom::nextInRange(int a,int b) {if (sw == 0) {for (;;) {int k = rand() % (b - a+1) + a;if (k % 2 == 0) { // 짝수return k;break;}}}else {for (;;) {int k = rand() % (b - a +1) + a;if (k % 2 != 0) { // 홀수return k;break;}}}}int main() {cout << "짝수 0 홀수 1 입력 ";int sw;cin >> sw;SelectableRandom r(sw);cout << "-- 0에서 " << RAND_MAX << "까지의 짝수 랜덤 정수 10 개--" << endl;for (int i = 0; i < 10; ++i) {int n = r.next(); //0에서 RAND_MAX(32767) 사이의 랜덤한 짝수 정수cout << n << ' ';}cout << endl << endl;cout << "짝수 0 홀수 1 입력 ";cin >> sw;SelectableRandom s(sw);cout << endl << endl << "-- 2에서 " << "9 까지의 랜덤 홀수 정수 10 개 --" << endl;for (int i = 0; i < 10; ++i) {int n = s.nextInRange(2, 9); //2에서 9사이의 랜덤한 홀수 정수cout << n << ' ';}cout << endl;return 0;}실행결과
짝수를 생성할 지, 홀수를 생성할 지, 입력을 받아 멤버 변수로 저장하여 구분하였습니다.
'C++' 카테고리의 다른 글
명품 C++ 3장 9번 (0) 2018.10.28 명품 C++ 3장 8번 (0) 2018.10.28 명품 C++ 3장 6번 (1) 2018.10.28 명품 C++ 3장 5번 (0) 2018.10.28 명품 C++ 3장 4번 (0) 2018.10.28