losowanie bez powtórzeń, kurs c++ rodział 21
Ostatnio zmodyfikowano 2020-11-03 20:14
tsutsumu Temat założony przez niniejszego użytkownika |
losowanie bez powtórzeń, kurs c++ rodział 21 » 2020-11-03 14:06:12 wszystko sie kompiluje, ale mimo to zdarza sie jedno powtorzenie raz na jakis czas( moze i kilka ale nie zdarzylo mi sie wiecej niz jedno przy 20 probach ) moze po prostu ten kod nie ma sensu, ale moim zdaniem jakis to sens logiczny powinien miec, jesli to niewielki blad to prosze o wskazanie go a jesli cala czec kodu odpowiedzialna za "wykrywanie" czy liczba sie powtarza nie ma sensu, to wyjasnic dlaczego. bylbym bardzo wdzieczny ^^(mam nadzieje ze tym razem post zgodnie z regulaminem wstawiony) #include <iostream> #include <windows.h> #include <time.h> #include <cstdlib> using namespace std; void losuj( int t[] );
int wynik[ 5 ]; int main() { srand( time( NULL ) ); losuj( wynik ); for( int i = 0; i < 5; i++ ) { cout << wynik[ i ] << endl; Sleep( 1000 ); } return 0; } void losuj( int t[] ) { int bufor, i = 0; do { bufor = rand() % 10 + 1; if( i == 0 ) { t[ i ] = bufor; i++; } else { for( int j = 0; j <= i; j++ ) { if( t[ j ] == bufor ) { bufor = rand() % 10 + 1; j--; } else t[ j + 1 ] = bufor; } i++; } } while( i < 5 ); }
jeszcze probowalem z taka wariacja ale tez lipa for( int j = 0; j <= i; j++ ) { if( t[ j ] != bufor ) t[ j + 1 ] = bufor; else { bufor = rand() % 10 + 1; j--; } } i++; }
|
|
pekfos |
» 2020-11-03 18:18:35 Nawet nie wywołujesz funkcji losuj(). Po wykryciu powtórzenia musisz powtórzyć cały test. Obecnie sprawdzasz tylko czy wylosowałeś inną liczbę i nadpisujesz poprzednio wylosowane liczby z jakiegoś powodu. Powinieneś rozgraniczyć losowanie liczby od sprawdzania czy liczba jest w tablicy. |
|
tsutsumu Temat założony przez niniejszego użytkownika |
» 2020-11-03 20:14:04 Faktycznie, jak wycinalem zbedna czesc kodu to przez przypadek ciachnalem te funkcje, juz edytowalem post, rozwniez tez napisalem inny kod z uwzglednieniem oddzielonych funkcji, losujacych i sprawdzajacych i faktycznie dziala ale jestem bardzo ciekawy czemu nie mozna tego inaczej napisac :P |
|
« 1 » |