Losowanie bez powtorzen - zadanie
Ostatnio zmodyfikowano 2015-10-17 02:46
mlody1312 Temat założony przez niniejszego użytkownika |
Losowanie bez powtorzen - zadanie » 2015-10-17 02:46:20 Witam! Próbuje rozwiązać zadanie z losowania liczb bez powtórzeń. Nieco sobie je zmodyfikowałem, użytkownik podaje ilość liczb do wylosowania. Wszystko działa dopóki program nie dojdzie do wypisywania wylosowanych liczb z tablicy. Oto mój kod: #include <iostream> #include <cstdio> #include <cstdlib> #include <ctime> using namespace std;
bool losuj( int t[], int iledolosowania ) { int i = 0, x = 0, losowanych = 5; int losowana =( rand() % 15 ) + 1; if( x < losowanych ) { do { if( losowana = t[ i ] ) return false; i++; } while( i < iledolosowania ); x++; } return true; }
int wczytaj( int t[], int iledolosowania ) { int i = 0; do { cout << "Podaj liczbe: "; cin >> t[ i ]; i++; } while( i < iledolosowania ); }
int main() { srand( time( 0 ) ); int tablica[ 10 ]; int prawdziwa[ 10 ]; int wylosowanych = 0, iledolosowania = 0, losowane = 0; cout << "Ile liczb chcesz wylosowac ? Minimum 6 liczb maxymalnie 10 z przedziału od 1-15. Zostanie wylosowanych 5 z nich." << endl; cin >> iledolosowania; wczytaj( tablica, iledolosowania ); do { if( losowane < iledolosowania ) { if( losuj( tablica, iledolosowania ) == false ) { if( tablica[ losowane ] = prawdziwa[ wylosowanych ] ) { prawdziwa[ wylosowanych ] = tablica[ losowane ]; wylosowanych++; } losowane++; } } else losowane = 0; } while( wylosowanych < 5 ); wylosowanych = 0; do { cout << prawdziwa[ wylosowanych ] << endl; wylosowanych++; } while( wylosowanych < 5 ); getchar(); return 0; }
Może mnie ktoś nakierować co zrobiłem źle, na co zwrócić uwagę. |
|
« 1 » |