Advertisement
MeehoweCK

Untitled

Mar 15th, 2021
667
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.25 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>      // rand, srand
  3. #include <ctime>        // time
  4.  
  5. using namespace std;
  6.  
  7. unsigned short a, b, n;
  8.  
  9. void totalizator()
  10. {
  11.     cout << "Wpisz ile liczb ma byc losowanych: ";
  12.     cin >> n;
  13.     cout << "Podaj przedzial losowanych liczb (od do): ";
  14.     cin >> a >> b;
  15.     if(a > b)
  16.         swap(a, b);     // zamiana wartości zmiennych
  17.     while((b - a) < n)
  18.     {
  19.         cout << "Przedzial od " << a << " do " << b << " jest zbyt waski, podaj nowy przedzial: ";
  20.         cin >> a >> b;
  21.         if(a > b)
  22.             swap(a, b);
  23.     }
  24. }
  25.  
  26. bool czy_juz_jest(unsigned short* tablica, unsigned short liczba, unsigned short ile)
  27. {
  28.     for(unsigned short i = 0; i < ile; ++i)
  29.         if(liczba == tablica[i])
  30.             return true;
  31.     return false;
  32. }
  33.  
  34. void sortuj_tablice(unsigned short* tablica)
  35. {
  36.     for(unsigned short i = 0; i < n; ++i)
  37.         for(unsigned short j = 0; j < n - i - 1; ++j)
  38.             if(tablica[j] > tablica[j + 1])
  39.                 swap(tablica[j], tablica[j + 1]);
  40. }
  41.  
  42. void wypisz_tablice(unsigned short* tablica)
  43. {
  44.     for(unsigned short i = 0; i < n; ++i)
  45.         cout << tablica[i] << '\t';
  46.     cout << endl;
  47. }
  48.  
  49. void wylosuj(unsigned short* tablica)
  50. {
  51.     srand(time(nullptr));
  52.     unsigned short losowana;
  53.     for(unsigned short i = 0; i < n; ++i)
  54.     {
  55.         do
  56.         {
  57.             losowana = a + rand() % (b - a + 1);
  58.         } while(czy_juz_jest(tablica, losowana, i));
  59.         tablica[i] = losowana;
  60.     }
  61.     sortuj_tablice(tablica);
  62. }
  63.  
  64. void wypelnij_tablice(unsigned short* tablica)
  65. {
  66.     unsigned short liczba;
  67.     for(unsigned short i = 0; i < n; ++i)
  68.     {
  69.         cout << "Podaj liczbe: ";
  70.         cin >> liczba;
  71.         while(liczba < a || liczba > b || czy_juz_jest(tablica, liczba, i))
  72.         {
  73.             if(liczba < a || liczba > b)
  74.             {
  75.                 cout << "Podana przez Ciebie liczba nie miesci sie w przyjetym przedziale. Podaj liczbe z przedzialu od "
  76.                      << a << " do " << b << ": ";
  77.                 cin >> liczba;
  78.             }
  79.             else if(czy_juz_jest(tablica, liczba, i))
  80.             {
  81.                 cout << "Podana przez Ciebie liczba juz zostala podana wczesniej. Podaj inna liczbe: ";
  82.                 cin >> liczba;
  83.             }
  84.         }
  85.         tablica[i] = liczba;
  86.     }
  87.     sortuj_tablice(tablica);
  88. }
  89.  
  90. bool wygrana(unsigned short* tablica, unsigned short* tablica2, unsigned short& ile)
  91. {
  92.     ile = 0;
  93.     for(unsigned short i = 0; i < n; ++i)
  94.         if(czy_juz_jest(tablica, tablica2[i], n))
  95.             ++ile;
  96.     if(ile > 0)
  97.         return true;
  98.     return false;
  99. }
  100.  
  101. int main()
  102. {
  103.     totalizator();
  104.     unsigned short tablica_losowana[n], tablica_uzytkownika[n];
  105.     wypelnij_tablice(tablica_uzytkownika);
  106.     wylosuj(tablica_losowana);
  107.     cout << "\nLiczby wylosowane:\t";
  108.     wypisz_tablice(tablica_losowana);
  109.     cout << "Liczby uzytkownika:\t";
  110.     wypisz_tablice(tablica_uzytkownika);
  111.     unsigned short ile_trafionych;
  112.     if(wygrana(tablica_losowana, tablica_uzytkownika, ile_trafionych))
  113.         cout << "Udalo Ci sie trafic " << ile_trafionych << " liczbe na " << n << " mozliwych\n";
  114.     else
  115.         cout << "Niestety nie udalo sie nic trafic :(\n";
  116.     return 0;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement