Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.51 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. #include <algorithm>
  5. #include <limits>
  6.  
  7. using namespace std;
  8.  
  9. int main(void) {
  10. /*
  11. Määritellään vakiot, alustetaan pseudorändöm-generäättöri ja esitellään globaalit muuttujat.
  12. Unsigned koska käpistellään vain positiivia lukuja (lue: HiFistely Maximus).
  13.  
  14. Rajoitin = pallojen määrä, numerot = sallittujen numeroarvojen yläraja. Alaraja kovakoodattu 1.
  15. */
  16. const unsigned int rajoitin = 7, numerot = 39;
  17. srand ( static_cast<unsigned>(time(NULL)) );
  18.  
  19. unsigned int oikein = 0, i = 0;
  20. bool virhe = false;
  21.  
  22. unsigned int lottonumerot[rajoitin], valitut_numerot[rajoitin], kaytetyt_numerot[2][rajoitin];
  23.  
  24. // Nollataan tarpeelliset muuttujat.
  25. for (unsigned int u = 0; u < rajoitin; ++u) {
  26. lottonumerot[u] = 0;
  27. valitut_numerot[u] = 0;
  28. kaytetyt_numerot[0][u] = 0;
  29. kaytetyt_numerot[1][u] = 0;
  30. }
  31.  
  32. // Ohjelma alkaa!
  33. while (true) {
  34. // Arvotaan lottonumerot, virallisena valvojana Aulis Gerlander
  35. i = 0;
  36.  
  37. while (i < rajoitin) {
  38. while (true) {
  39. lottonumerot[i] = rand() % numerot + 1;
  40.  
  41. for (unsigned int u = 0; u < rajoitin; ++u) {
  42. if (lottonumerot[i] == kaytetyt_numerot[0][u]) {
  43. virhe = true;
  44. }
  45. }
  46.  
  47. if (virhe == false) {
  48. kaytetyt_numerot[0][i] = lottonumerot[i];
  49. ++i;
  50.  
  51. break;
  52. }
  53.  
  54. virhe = false;
  55. }
  56. }
  57.  
  58.  
  59. // Järjestetään lottonumerot pienimmästä suurimpaan.
  60. sort(lottonumerot, (lottonumerot+rajoitin));
  61.  
  62.  
  63. // Kirjataan ylös käyttäjän valitsemat numerot.
  64. cout << "Ilmianna lottonumerot (1 - " << numerot << ", " << rajoitin << " kpl, 0 = lopetus): " << endl;
  65.  
  66. i = 0;
  67.  
  68. while (i < rajoitin) {
  69. while (true) {
  70. cout << (i + 1) << ". ";
  71.  
  72. if ( !(cin >> valitut_numerot[i]) ) {
  73. virhe = true;
  74. }
  75.  
  76. cin.clear();
  77. cin.ignore(numeric_limits<streamsize>::max(),'\n');
  78.  
  79. if ((valitut_numerot[i] == 0) && (virhe == false)) {
  80. return EXIT_SUCCESS;
  81. }
  82.  
  83. if (valitut_numerot[i] != 0) {
  84. for (unsigned int u = 0; u < rajoitin; ++u) {
  85. if (valitut_numerot[i] == kaytetyt_numerot[1][u]) {
  86. virhe = true;
  87. cout << "Voit valita saman luvun vain kerran!" << endl;
  88. }
  89. }
  90. }
  91.  
  92. if ((valitut_numerot[i] <= numerot) && (valitut_numerot[i] >= 1) && (virhe == false)) {
  93. kaytetyt_numerot[1][i] = valitut_numerot[i];
  94. ++i;
  95.  
  96. break;
  97. }
  98.  
  99. virhe = false;
  100. }
  101. }
  102.  
  103.  
  104. // Tulostetaan lottonumerot näytölle.
  105. cout << "Arvotut lottonumerot: ";
  106.  
  107. for (unsigned int u = 0; u < rajoitin; ++u) {
  108. cout << lottonumerot[u];
  109.  
  110. if (u != (rajoitin - 1) ) {
  111. cout << ", ";
  112. }
  113. else {
  114. cout << "." << endl;
  115. }
  116. }
  117.  
  118.  
  119. // Lasketaan kuinka moni käyttäjän numeroista meni oikein.
  120. i = 0;
  121.  
  122. while (i < rajoitin) {
  123. for (unsigned int u = 0; u < rajoitin; u++) {
  124. if (valitut_numerot[i] == lottonumerot[u]) {
  125. ++oikein;
  126.  
  127. break;
  128. }
  129. }
  130. ++i;
  131. }
  132.  
  133.  
  134. // Kerrotaan käyttäjälle kuinka monta rivistä oikein.
  135. cout << "Sait " << oikein << " oikein!";
  136.  
  137. if (oikein < 4) {
  138. cout << " :-(" << endl;
  139. }
  140. else {
  141. cout << " :-)" << endl;
  142. }
  143.  
  144.  
  145. // Uusi kierros, nollataan.
  146. for (unsigned int u = 0; u < rajoitin; ++u) {
  147. kaytetyt_numerot[0][u] = 0;
  148. kaytetyt_numerot[1][u] = 0;
  149. }
  150. }
  151.  
  152. return EXIT_SUCCESS;
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement