#include #include using namespace std; const int MAX = 25; //Het maken van een random getal int randomgetal10000() { // tussen 0 en 9999 static int getal = time (NULL) % 10000; getal = ( 621 * getal + 1 ) % 10000; return getal; } class grootgetal { public: grootgetal(); ~grootgetal() { }; void vul(int aantal, int deelgetal); void vulrandom(int aantal); bool testop1(); bool iseven(int i); bool maal3plus1(); void deeldoor2(); void vermoedentest(); void drukaf(); private: int groot[MAX]; }; grootgetal::grootgetal() { for (int i = 0; i < MAX; i++) { groot[i] = 0; } // end for } // end grootgetal::grootgetal void grootgetal::vul(int deelgetal, int aantal) { for(int i = 0; i < aantal; i++) { groot[i] = deelgetal; } //end for } //end grootgetal::vul void grootgetal::vulrandom(int aantal) { for (int i = 0; i < aantal; i++) { groot[i] = randomgetal10000(); } // end for } // end grootgetal::vulrandom bool grootgetal::iseven(int i) { return(not(groot[i] % 2)); } // end grootgetal::iseven void grootgetal::deeldoor2() { int rest = 0; for (int i = MAX - 1; i >= 0; i--) { if (iseven(i)) { groot[i] = groot[i]/2 + rest; rest = 0; } else { groot[i] = groot[i]/2 + rest; rest = 5000; } // end if } // end for } // end grootgetal::deeldoor2 bool grootgetal::maal3plus1() { int rest = 1; // Alvast +1 for(int i = 0; i < MAX; i++) { groot[i] = (groot[i] * 3) + rest; if(groot[i] >= 10000){ rest = (groot[i] / 10000); groot[i] = (groot[i] - (rest * 10000)); } else { rest = 0; } //end if } //end for if (groot[MAX] > 9999) { return (false); } else { return (true); } //end if } //end grootgetal::maal3plus1 bool grootgetal::testop1() { if (groot[0] == 1) { for (int i = 1; i < MAX - 1; i++) { if (groot[i] != 0) { return (false); } //end if } //end for return (true); } return (false); } //end grootgetal::testop1 void grootgetal::vermoedentest() { int aantalintaraties = 0; //aantal keer (3x+1) (/2) noodzakelijk while (not(testop1())) { if ((aantalintaraties % 100) == 0) { cout << "Stap "; cout.width(6); cout.fill(' '); cout << aantalintaraties << ": "; drukaf(); cout << endl; } //end if if (iseven(0)) { deeldoor2(); } else { maal3plus1(); } //end if aantalintaraties++; } //end while cout << "Totaal aantal intaraties: " << aantalintaraties << endl;; } //end grootgetal::vermoedentest() void grootgetal::drukaf() { cout << groot[MAX - 1]; for (int i = MAX - 2; i >= 0; i--) { if (groot[i] > 999) { cout << groot[i]; } else if (groot[i] > 99) { cout << "0" << groot[i]; } else if (groot[i] > 9) { cout << "00" << groot[i]; } else { cout << "000" << groot[i]; }//end if } //end for } //end grootgetal::drukaf int main() { cout << endl; grootgetal BigGetal; BigGetal.vul(123,5); cout << endl; BigGetal.vermoedentest(); cout << endl; BigGetal.vulrandom(19); BigGetal.vermoedentest(); }