#include <iostream>
#include <stdlib.h>

using namespace std;

string decyzjaUzytkownikaGenerowanie = "Tak";

// ============================= FUNKCJA "GENERUJ" =============================
void generuj()
{
while((decyzjaUzytkownikaGenerowanie == "Tak") || (decyzjaUzytkownikaGenerowanie == "tak") || (decyzjaUzytkownikaGenerowanie == "t") || (decyzjaUzytkownikaGenerowanie == "T")) {
const int iloscElementow = 60;
const int gornyZakres = 9;
unsigned tablicaLiczb[iloscElementow],numerElementuTablicy,j,licznik,iloscWystapien,pozycjaElementuNajczestszego,najczestszyElement;
system("clear");

// WYGENEROWANIE TABLICY Z LICZBAMI LOSOWYMI
srand((unsigned)time(NULL));
for(numerElementuTablicy=0; numerElementuTablicy<iloscElementow; numerElementuTablicy++) {
    tablicaLiczb[numerElementuTablicy] = rand() % (gornyZakres+1);
}

// WYSZUKANIE NAJCZESTSZEGO ELEMENTU
najczestszyElement = tablicaLiczb[0];
pozycjaElementuNajczestszego=0;
iloscWystapien=1;
for(numerElementuTablicy=0; numerElementuTablicy<iloscElementow; numerElementuTablicy++) {
    licznik = 0;
    for(j=0; j<iloscElementow; j++) {
        if(tablicaLiczb[numerElementuTablicy] == tablicaLiczb[j]) {
                licznik++;
        }
    }
    if(licznik > iloscWystapien) {
        najczestszyElement = tablicaLiczb[numerElementuTablicy];
        pozycjaElementuNajczestszego = numerElementuTablicy;
        iloscWystapien = licznik;
    }
}

// WYPISANIE WYNIKÓW
cout << "\n\n=========================== NAJPOPULARNIEJSZA LICZBA ==========================\n\n";
cout << ":: GENERACJA LICZB LOSOWYCH:\n\n";
for(numerElementuTablicy=0; numerElementuTablicy<iloscElementow; numerElementuTablicy++) {
    cout << "  " << tablicaLiczb[numerElementuTablicy] << "  ";
}
cout << "\n\n\nCzy mam wyszukac najpopularniejsza liczbe w tym ciagu?\n\nTwoja odpowiedz (Tak/Nie): ";
string decyzjaUzytkownikaWyszukanie;
cin >> decyzjaUzytkownikaWyszukanie;
if((decyzjaUzytkownikaWyszukanie == "Tak") || (decyzjaUzytkownikaWyszukanie == "tak") || (decyzjaUzytkownikaWyszukanie == "t") || (decyzjaUzytkownikaWyszukanie == "T")) {
    system("clear");
    cout << "\n\n=========================== NAJPOPULARNIEJSZA LICZBA ==========================\n\n";
    cout << ":: GENERACJA LICZB LOSOWYCH:\n\n";
    for(numerElementuTablicy=0; numerElementuTablicy<iloscElementow; numerElementuTablicy++) {
        if(tablicaLiczb[numerElementuTablicy] == najczestszyElement) {
                cout << " [" << tablicaLiczb[numerElementuTablicy] << "]";
        }
        else {
                cout << "  " << tablicaLiczb[numerElementuTablicy] << " ";
        }
    }
    cout << "\n\n\n:: WYNIKI WYSZUKIWANIA:" << endl;
    cout << "Najczesciej wystepujaca liczba: " << najczestszyElement << "." << endl;
    cout << "Wystapila w ciagu: " << iloscWystapien << " razy." << endl;
    cout << "Po raz pierwszy wystapila na pozycji nr: " << pozycjaElementuNajczestszego + 1 << ".\n\n\n\n";
}
else {
    cout << "\n\nUzytkownik nie chcial zobaczyc wynikow." << endl;
}
cout << "Wygenerowac liczby ponownie?" << endl;
cout << "Twoja odpowiedz (Tak/Nie): ";
cin >> decyzjaUzytkownikaGenerowanie;
}
}


// ================================= FUNKCJA "MAIN" ===============================
int main(void)
{
generuj();
cout << "\n\nProgram zostanie zamkniety." << endl;
system("getkey");	
return 0;
}
