C++ Programming Ch.3 Exercise 7 Solution
Problem: λ¬Έμ 5λ²μ μ°Έκ³ νμ¬ μμ±μλ₯Ό μ΄μ©νμ¬ μ§μ νμλ₯Ό μ νν μ μλλ‘ SelectableRandom ν΄λμ€λ₯Ό μμ±νκ³ μ§μ 10κ°, νμ 10κ°λ₯Ό λλ€νκ² λ°μμν€λ νλ‘κ·Έλ¨μ μμ±νλΌ. Objective & Hints: ν΄λμ€ μμ±μμ λ§€κ° λ³μλ₯Ό κ°μ§ μμ±μμ νμ© Execution Result: Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 #include #include #include using namespace std; class SelectableRandom{ int num; public: SelectableRandom(int _num); // λ§€κ°λ³μλ‘ μ§μ νΉμ νμλ₯Ό λ°λλ€ int next(); int nextInRange(int a, int b); }; SelectableRandom::SelectableRandom(int _num){ num = _num; srand((unsigned)time(0)); } int SelectableRandom::next() { int ran = rand(); if(num%2 == 0){ // μ§μ return if(ran%2 == 0) return ran; else return --ran; } else { if(ran%2 == 0) // νμ return return ++ran; else return ran; } } int SelectableRandom::nextInRange(int a, int b){ int ran = rand()%(b-a+1) + a; if(num%2 == 0) { // μ§μ return if(ran%2 == 0) return ran; else return ++ran; } else { // νμ return if(ran%2 == 0) return ++ran; else return ran; } } int main() { SelectableRandom r1(0); // μ§μ λλ€ μ μ λ°μ cout << "-- 0μμ " << RAND_MAX << "κΉμ§μ μ§μ λλ€ μ μ 10 κ°--" << endl; for(int i=0; i<10; i++) { int n = r1.next(); cout << n << ' '; } SelectableRandom r2(1); // νμ λλ€ μ μ λ°μ cout << endl << endl << "-- 2μμ " << "9 κΉμ§μ λλ€ νμ μ μ 10 κ° --" << endl; for(int i=0; i<10; i++) { int n = r2.nextInRange(2,9); cout << n << ' '; } cout << endl; } Explanation: ...