Na początek Witam.
Dla poćwiczenia chciałem zrobić generator lotto jakich dużo na necie.
#include <iostream>
#include <time.h>
#include <cstdlib>
using namespace std;
int trafien[7] = {0};
void randNums(int *tab, int size)
{
srand((int)(time (NULL)));
for (int i = 0; i < size;)
{
tab[i] = rand() % 49+1;
bool rep = false;
for (int j = 0; j < i; ++j)
{
if (tab[j] == tab[i])
{
rep = true;
break;
}
}
if (!rep) ++i;
}
}
void compareArrays(int *tab, int *tab2, int size)
{
int ile = 0;
for (int i = 0; i < size; ++i)
{
for (int j = 0; j < size; ++j)
{
if (tab[i] == tab2[j])
{
++ile;
}
}
}
switch (ile)
{
case 0: trafien[0]++; break;
case 1: trafien[1]++; break;
case 2: trafien[2]++; break;
case 3: trafien[3]++; break;
case 4: trafien[4]++; break;
case 5: trafien[5]++; break;
case 6: trafien[6]++; break;
}
}
int main()
{
int tab[6];
int size = sizeof(tab)/sizeof(tab[0]);
randNums(tab,size);
cout << "Wylosowales liczby ";
for (int j = 0; j < size; ++j)
{
cout << tab[j] << " ";
}
cout << "\nIle razy chcesz losowac ? ";
int ile;
cin >> ile;
int tab2[6];
for (int i = 0; i < ile; ++i)
{
randNums(tab2,size);
compareArrays(tab,tab2,size);
for (int j = 0; j < size+1; ++j)
{
cout << trafien[j] << " ";
}
cout << endl;
if(i < ile-1) system("CLS");
}
cout << "Trafienia" << endl;
system("PAUSE");
return 0;
}
Pierwszą tablicę (dla gracza) losuje poprawnie:
int tab[6];
int size = sizeof(tab)/sizeof(tab[0]);
randNums(tab,size);
Drugą też:
for (int i = 0; i < ile; ++i)
{
randNums(tab2,size);
Jednakże, potem losuje te same co w drugiej, czasem już drugą i dalej losuje tam samo jak pierwszą.
Z góry THX za pomoc :)