Nie rozumiem do końca przykładu z podręcznika,a mianowicie fragmentu:
for (int i = 0; i < ILOSC_LICZB; )
{
// wylosowanie liczby
aLiczby[i] = rand() % MAKSYMALNA_LICZBA + 1;
// sprawdzenie, czy się ona nie powtarza
bool bPowtarzaSie = false;
for (int j = 0; j < i; ++j)
{
if (aLiczby[j] == aLiczby[i])
{
bPowtarzaSie = true;
break;
}
}
// jeżeli się nie powtarza, przechodzimy do następnej liczby
if (!bPowtarzaSie) ++i;
}
Tutaj cały kod:
#include
#include
#include
#include
// Lotto - użycie prostej tablicy liczb
const unsigned ILOSC_LICZB = 6;
const int MAKSYMALNA_LICZBA = 49;
int main()
{
// deklaracja i wyzerowanie tablicy liczb
unsigned aLiczby[ILOSC_LICZB];
for (int i = 0; i < ILOSC_LICZB ; ++i)
aLiczby[i] = 0; //
// losowanie liczb
srand (static_cast(time(NULL)));
for (int i = 0; i < ILOSC_LICZB; )
{
// wylosowanie liczby
aLiczby[i] = rand() % MAKSYMALNA_LICZBA + 1;
// sprawdzenie, czy się ona nie powtarza
bool bPowtarzaSie = false;
for (int j = 0; j < i; ++j)
{
if (aLiczby[j] == aLiczby[i])
{
bPowtarzaSie = true;
break;
}
}
// jeżeli się nie powtarza, przechodzimy do następnej liczby
if (!bPowtarzaSie) ++i;
}
// wyświetlamy wylosowane liczby
std::cout << "Wyniki losowania:" << std::endl;
for (int i = 0; i < ILOSC_LICZB; ++i)
std::cout << aLiczby[i] << " ";
// czekamy na dowolny klawisz
getch();
}
Autor podręcznika tłumaczy to tak, ale ja nic z tego nie pojmuje :
Czy mógłby mi ktoś wytłumaczyć to w jakiś bardziej zrozumiały sposób? Bo z tego, co wnioskuję, to autor przypisał wcześniej liczbę z losowania do konkretnego elementu np. aLiczby [element 0] = do wyniku z losowania. Więc skąd te całe porównywanie przez j? Czemu j miałoby być j-tą wartością(indeksem??) z tablicy,a nie elementem?