Losowanie bez powtórzeń //rozdział 21
Ostatnio zmodyfikowano 2013-08-28 09:27
Najsu Temat założony przez niniejszego użytkownika |
Losowanie bez powtórzeń //rozdział 21 » 2013-08-27 20:21:26 Cześć, poniżej kod mojego programu, podjąłem samodzielną walkę i o to co mi wyszło :D Wszystko działa jak powinno, losuje 5 liczb bez powtórzeń z zakresu 1-10. Piszę, ponieważ jest jeden, chyba problem, a mianowicie chodzi o tą część kodu: else { cout << wylosowana << " - liczba jest juz w tablicy." << endl; licznik--; }
Czasami po odpaleniu programu widać coś takiego: 4 - liczba jest juz w tablicy. 9 - liczba jest juz w tablicy. 5 - liczba jest juz w tablicy.
8, 10, 1, 4, 6, Process returned 0 (0x0) execution time : 0.037 s Press any key to continue.
...i tutaj jak widzimy, cyfry 9 nie ma w tablicy, jednak pojawiła się na górze. Czy wszystko z moim kodem jest okej? Z góry dzięki za pomoc. #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
int wylosuj() { return rand() % 10 + 1; }
bool sprawdzam( int wylosowana, int tablica[] ) { int licznik = 0; do { if( tablica[ licznik ] == wylosowana ) { return false; } licznik++; } while( licznik < 5 ); return true; } int main() { srand( time( NULL ) ); int tablica[ 5 ], wylosowana; int licznik = 0; do { wylosowana = wylosuj(); bool spr = sprawdzam( wylosowana, tablica ); if( spr ) { tablica[ licznik ] = wylosowana; licznik++; } else { cout << wylosowana << " - liczba jest juz w tablicy." << endl; licznik--; } } while( licznik < 5 ); licznik = 0; do { cout << tablica[ licznik ] << ", "; licznik++; } while( licznik < 5 ); return 0; }
|
|
pekfos |
» 2013-08-27 20:39:42 Tablica zawiera na początku śmieci, które też sprawdzasz. |
|
Najsu Temat założony przez niniejszego użytkownika |
» 2013-08-27 20:46:43 Zgadza się, jak ją wyczyścić? Mogę wszystkim jej argumentom przypisać zero za pomocą pętli, lecz co w przypadku gdy chciałbym np. losować liczby od -5 do 10? |
|
pekfos |
» 2013-08-27 20:48:00 To sprawdzaj tylko te elementy, które już zapisałeś. |
|
Najsu Temat założony przez niniejszego użytkownika |
» 2013-08-27 21:24:52 Dzięki za naprowadzenie, tak też zrobię. Poza tym z kodem wszystko okej? |
|
pekfos |
» 2013-08-27 21:28:28 Poza tym z kodem wszystko okej? |
A działa? |
|
Najsu Temat założony przez niniejszego użytkownika |
» 2013-08-27 22:05:52 W takim razie do zamknięcia, dzięki za pomoc. |
|
RazzorFlame |
» 2013-08-28 09:27:06 @UP sam możesz zamykać swoje tematy... |
|
« 1 » |