Losowanie bez powtarzania
Ostatnio zmodyfikowano 2014-01-09 23:01
Ginterhauser Temat założony przez niniejszego użytkownika |
Losowanie bez powtarzania » 2014-01-09 21:49:54 Witam! Prosiłbym o znalezienie błędu w moim kodzie. Zależy mi na znalezieniu odpowiedzi co jest w nim nie tak, ponieważ zauważyłem teraz że ten sam błąd robię nagminnie, ale nie umiem go zlokalizować Po uruchomieniu, program "ma humory" - czasami działa jak powinien, czasami nie. Jeżeli działa, to działa, jeżeli nie - wyrzuca losową liczbę #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
int enter() { int number; cout << "Proszę podać liczbę:" << endl; cin >> number; return number; }
bool check( int number, int array[] ) { int i = 0; if( i = 0 ) return false; else { do { if( array[ i ] == number ) return true; i++; } while( i < 3 ); } return false; }
int randomize( int array[] ) { return array[( rand() % 3 ) ]; } int main() { srand( time( NULL ) ); int array[ 3 ]; int i = 0; int used[ 2 ]; do { int liczba = enter(); array[ i ] = liczba; i++; } while( i < 3 ); i = 0; do { int wololo = randomize( array ); if( !check( wololo, used ) ) used[ i ] = wololo; cout << used[ i ]; i++; } while( i < 2 ); }
|
|
alixir |
» 2014-01-09 23:01:21 Po 1. Przypisanie zamiast porównania. Po 2. Nawet po zmianie na == warunek zawsze jest spełniony if( !check( wololo, used ) ) used[ i ] = wololo;
cout << used[ i ];
Po 3. W przypadku gdyby funkcja check zwróciła true (u ciebie zawsze false), wyświetlasz niezainicjalizowana zmienną |
|
« 1 » |