OK. Wiemy już jak powstają liczby pseudolosowe. Pętla for (i=0; i<6; i++) //linia 9 odpowiada za losowanie kolejnych liczb. Zaczyna się dla i=0, wykonuje się dopóki spełniony jest warunek i<6, a za każdym przejściem i zwiększane jest o 1 (i++). Tak więc pętla wykona się 6 razy dla i 0, 1, 2, 3, 4, 5. Dla i=6 warunek nie będzie już spełniony i pętla się zakończy. Rozpoczęcie pętli od 0 ma tą zaletę, że pierwszy element tablicy ma indeks właśnie 0. Następnie mamy pętlę do-while (czyli wykonuj dopóki). W tego rodzaju pętli, w odróżnieniu od pętli for(). mamy tylko warunek wykonywania się pętli bez warunku startowego i bez określenia co ma się zmieniać w kolejnych przejściach pętli. Pętla ta najpierw wykonuje czynności zawarte w nawiasach, a następnie sprawdza warunek. jeżeli jest prawdziwy, to wykonuje się ponownie, jeżeli nie to pętla kończy swoje działanie. Ponieważ warunek sprawdzany jest na końcu, pętla ta wykona się co najmnej raz. Na początku tej pętli nadajemy wartość zmiennej pomocniczej nowaliczba=1. Wartość 1 tej zmiennej oznacza, że nowo wylosowana liczba jest różna od poprzednio wylosowanych (liczby nie powtórzyły się), wartość 0 oznacza, że nowo wylosowana liczba jest równa którejś z poprzednio wylosowanych (liczby powtórzyły się). Dalej mamy wylosowanie nowej liczby. Następnie mamy pętle for(k=0; k<i; k++) wraz ze sprawdzeniem warunku if (lotek[k]==losowaliczba) nowaliczba=1; Zaczynamy pętle z k=0, pętla wykonuje się póki spełniony jest warunek k<i i k zwiększa się o 1. W tablicy lotek[] mamy już wylosowane liczby. Jeżeli i=0, czyli to pierwsza losowana liczba, to warunek k<i, nie będzie spełniony i pętla się nie wykona, zmienna nowaliczba będzie mieć wartość 0 (nadaną w linii 13), warunek nowaliczba==1 w while (linia 19) nie będzie spełniony i pętla do-while się zakończy. Jeżeli i=1, czyli losujemy drugą liczbę, warunek k<i będzie spełniony dla k=0 i petla wykona się raz dla k=0. Jeżeli teraz poprzednio wylosowana liczba zawarta w tablicy lotek[0] jest równa obecnie wylosowanej (liczby powtórzyły się), to nadawana jest wartść 1 zmiennej nowaliczba, warunek while (nowaliczba==1) jest spełniony i pętla do-wile jest wykonywana ponownie. Następuje ponowne losowanie liczby, bo liczby sie powtórzyły. Jeżeli natomiast warunek lotek[0]==losowaliczba, nie jest spełniony (liczby są różne), to wartość zmiennej nowaliczba pozostaje 0 i warunek while (nowaliczba==1) nie jest spełniony, pętla do-wile się kończy i rozpoczyna się kolejny obieg pętli for dla kolejnego i, a zarazem losowanie kolejnej liczby. Dla i=2,3,4,5 przebiega to analogicznie, z tym, że warunek lotek[k]==losowaliczba, jest sprawdzany dla kolejnych liczb, odpowiednio dla i=2, lotek[0]==losowaliczba, lotek[1]==losowaliczba dla i=3, lotek[0]==losowaliczba, lotek[1]==losowaliczba, lotek[2]==losowaliczba, itd
Autor postu otrzymał pochwałę
_________________ de gustibus non est disputandum
|