Losowanie bez powtórzeń - problem z funkcjami
Ostatnio zmodyfikowano 2012-11-07 19:54
SimpleJan Temat założony przez niniejszego użytkownika |
Losowanie bez powtórzeń - problem z funkcjami » 2012-11-07 17:27:04 Witam! Mam problem z 'zadaniem domowym' z lekcji o losowaniu bez powtórzeń. Poniższy kod (nie dokończony) nie działa tak jak chciałbym żeby działał. #include <iostream> #include <ctime> #include <cstdlib> using namespace std;
int losowanie() { return(( rand() % 10 ) + 1 ); } bool sprawdzanie( int losowa2, int liczby2[] ) { int a = 0; int ile = 5; do { if( losowa2 == liczby2[ a ] ); return true; a++; } while( a < ile ); return false; } int main() { srand( time( NULL ) ); int wylosowanych = 0; int liczby[ 5 ]; do { int losowa = losowanie(); if( sprawdzanie( losowa, liczby ) == true ) cout << "a"; if( sprawdzanie( losowa, liczby ) == false ) { liczby[ wylosowanych ] = losowa; wylosowanych++; } } while( wylosowanych < 5 ); }
Funkcja bool sprawdzanie(int losowa2, int liczby2[]) zawsze zwraca true. Wie ktoś czemu i w czym tkwi problem? |
|
jsc |
» 2012-11-07 17:31:49 Skąd wiesz, że true? "a" jest wyświetlane niezależnie od okoliczności. |
|
SimpleJan Temat założony przez niniejszego użytkownika |
» 2012-11-07 17:36:37 Zły kod dałem w pierwszej wiadomości, zmieniłem już na poprawny. |
|
DejaVu |
» 2012-11-07 17:49:47 Jeżeli możesz... to weź sprawdź rozwiązania innych. Tłumaczenie n-tysięczny raz tego samego jest naprawdę męczące. |
|
SimpleJan Temat założony przez niniejszego użytkownika |
» 2012-11-07 18:39:46 Nigdzie na forum nie znalazłem odpowiedzi, ale napisawszy kod jeszcze raz, zadziałał. Tak więc przepraszam za zbędny temat. |
|
SimpleJan Temat założony przez niniejszego użytkownika |
» 2012-11-07 19:54:32 (jako że nie chce spamować tematami napiszę tutaj) Eh, mam kolejny dylemat. Dotyczy on tego kodu #include <iostream> #include <ctime> #include <cstdlib> using namespace std;
int losuj() { return(( rand() % 3 ) + 0 ); }
bool JuzJest( int aWylosowanych, int aKoncowe[], int aLosowa ) { if( aWylosowanych <= 0 ) return false; int t = 0; do { if( aLosowa == aKoncowe[ t ] ) return true; t++; } while( t < aWylosowanych ); } int main() { srand( time( NULL ) ); int wylosowanych = 0; int wpisane[ 3 ]; int koncowe[ 2 ]; int losowa; cout << "Pierwsza: "; cin >> wpisane[ 0 ]; cout << "Druga: "; cin >> wpisane[ 1 ]; cout << "Trzecia: "; cin >> wpisane[ 2 ]; do { losowa = losuj(); if( JuzJest( wylosowanych, koncowe, losowa ) == false ) { cout << losowa << endl; koncowe[ wylosowanych ] = wpisane[ losowa ]; wylosowanych++; } } while( wylosowanych < 2 ); int w = 0; do { cout << koncowe[ w ] << endl; w++; } while( w < wylosowanych ); }
A w szczególności tego fragmentu: do { losowa = losuj(); if( JuzJest( wylosowanych, koncowe, losowa ) == false ) { cout << losowa << endl; koncowe[ wylosowanych ] = wpisane[ losowa ]; wylosowanych++; } } while( wylosowanych < 2 );
Otóż kiedy wpiszę koncowe[wylosowanych] = wpisane[losowa] "losowa" powtarza się, jednak kiedy zamiast tego wpisałem koncowe[wylosowanych] = losowa "losowa" się nie powtarza. Jak to możliwe? |
|
« 1 » |