Losowanie 10 liczb różnych od siebie
Ostatnio zmodyfikowano 2014-10-25 14:27
lectre Temat założony przez niniejszego użytkownika |
Losowanie 10 liczb różnych od siebie » 2014-10-25 14:04:59 Witam. Program niestety nie działa w 100%, czasami liczby się powtarzają. Zmienne i oraz o działają prawidłowo. #include <iostream> #include <cstdlib> #include <time.h>
int main() { srand( time( NULL ) ); const int ilosc = 10; int x[ ilosc ]; for( int i = 0; i < ilosc; i++ ) { x[ i ] = rand() % 10; } for( int i = 0; i < ilosc; i++ ) { for( int o = 0; o < ilosc; o++ ) { if( i == o ) continue; while( x[ i ] == x[ o ] ) x[ i ] = rand() % 10; } } for( int i = 0; i < ilosc; i++ ) std::cout << x[ i ] << " "; }
|
|
1aam2am1 |
» 2014-10-25 14:08:55 Liczba którą wylosowałeś przy sprawdzaniu czy się powtarzają mogła już być wylosowana a w ostatniej pętli już tego niesprawdzasz |
|
stryku |
» 2014-10-25 14:14:01 Zrób sobie funkcję, która będzie sprawdzała czy liczba jest już wylosowana. Np taka: bool juzJest( int tab[], int liczba, int ilosc ) { for( int i = 0; i < ilosc; i++ ) if( tab[ i ] == liczba ) return true; return false; } I już przy losowaniu sprawdzaj czy wylosowałeś unikatową liczbę for( int i = 0; i < ilosc; i++ ) { int liczba; do { liczba = rand() % 10; } while( juzJest( x, liczba, i ) ) x[ i ] = liczba; }
|
|
lectre Temat założony przez niniejszego użytkownika |
» 2014-10-25 14:27:00 Dziękuję za bardzo szybkie i trafne odpowiedzi. W odpowiedzi kolegi wyżej brakuje jedynie średnika na końcu pętli do while. Temat do zamknięcia. |
|
« 1 » |