Losowanie bez powtórzeń
Ostatnio zmodyfikowano 2017-01-16 22:27
vhair Temat założony przez niniejszego użytkownika |
Losowanie bez powtórzeń » 2017-01-16 19:47:57 #include <iostream> #include <ctime> #include <cstdlib> using namespace std;
void losowanie( int a ) { srand( time( NULL ) ); a =( rand() % 10 ) + 1; }
void selekcja( int a[], int nr ) { int n = 1; do { if( nr > 0 && a[ nr ] == a[ nr - n ] ) { losowanie( a[ nr ] ); } else n++; } while( nr >= n ); }
int main() { int a[ 10 ], n = 0; do { losowanie( a[ n ] ); selekcja( a, n ); cout << "\n Liczba nr " << n + 1 << " to " << a[ n ]; n++; } while( n != 9 ); n = 0; do { n++; } while( n != 9 ); return 0; } Zgodnie z rozdziałem 21 próbuję napisać kod na losowanie liczb bez powtórzeń po swojemu. Próbowałem i trochę się zgrzałem. Ostatecznie doszedłem jednak do takiej postaci i stwierdziłem, że jest najlepsza z dotychczasowych prób, przy czym nie działa tak, jak myślałem, że będzie działało. Pomóżcie znaleźć błąd/błędy w kodzie i w myśleniu. Poszukam na własną rękę, ale pomoc się przyda. Jak na razie program zwraca mi tylko liczbę nr. 1 - 0 (0, którego w ogóle tam nie powinno być). |
|
karambaHZP |
» 2017-01-16 21:32:09 void losowanie( int a ) { srand( time( NULL ) ); a =( rand() % 10 ) + 1; } |
Ta funkcja nie modyfikuje liczby, którą przekazujesz w argumencie. Albo przekaż liczbę przez referencję int & a lub nic nie przekazuj, ale zwróć wylosowaną wartość. int losuj() { return rand() % 10 + 1; } |
|
vhair Temat założony przez niniejszego użytkownika |
» 2017-01-16 22:27:15 Dzięki bardzo. |
|
« 1 » |