losowanie bez powtózeń z podanych liczb
Ostatnio zmodyfikowano 2014-03-17 13:32
leon_w |
» 2014-03-12 18:56:27 W funkcji czybylawylosowana() zawsze sprawdza ci tylko pierwszą pozycje w tablicy. Przy każdym wyjściu z funkcji, zmienne utworzone w danej funkcji są zerowane. Takiemu zerowaniu zapobiega przedrostek "static" przed rodzajem zmiennej. |
|
maciek77 Temat założony przez niniejszego użytkownika |
» 2014-03-12 20:17:51 to nie pomaga, cały kod jest chyba lekko zrypany i mi się nie podoba... muszę go od nowa napisać |
|
maciek77 Temat założony przez niniejszego użytkownika |
» 2014-03-12 21:33:43 hmm podaje liczby np 22,11,11 i nie losuje ich, w czym może leżeć problem? jak podam 22,1,2 lub 1,2,4 losuje... ogólnie do 5 jest ok |
|
SIwy |
» 2014-03-13 16:51:49 W funkcji czyBylaWylosowana do { if( tab[ i ] == wLiczba ) return true; i++; } while( i < wLiczba );
return false; }
zamień w while wLiczba na wLiczb - inaczej będziesz buszował gdzieś po pamięci, bo "i" będzie zwiększane aż do wartości wylosowanej liczby, a nie do ilości elementów w tablicy. |
|
maciek77 Temat założony przez niniejszego użytkownika |
» 2014-03-17 12:27:20 przy wypisywaniu z 8 z 10 podanych po wpisaniu program się wiesza... tablice mam chyba dobrze określone #include <iostream> #include <ctime> #include <cstdlib> using namespace std;
bool czyBylaWylosowana( int wLiczba, int tab[], int wLiczb ) { if( wLiczb <= 0 ) return false; int i = 0; do { if( tab[ i ] == wLiczb ) return true; i++; } while( i < wLiczb ); return false; }
int wczytaj( int tab[], int ile ) { cout << "Podaj trzy liczby." << endl; int i = 0; do { cin >> tab[ i ]; i++; } while( i < 10 ); }
int wylosuj( int tab[], int ile ) { return tab[( rand() % ile ) ]; }
int main() { srand( time( NULL ) ); int tablica[ 10 ]; int wylosowane[ 8 ]; int wylosowanych = 0; wczytaj( tablica, 10 ); do { int liczba = wylosuj( tablica, 10 ); if( czyBylaWylosowana( liczba, wylosowane, wylosowanych ) == false ) { wylosowane[ wylosowanych ] = liczba; wylosowanych++; } } while( wylosowanych < 8 ); cout << "Wylosowane liczby to " << endl; wylosowanych = 0; do { cout << wylosowane[ wylosowanych ] << endl; wylosowanych++; } while( wylosowanych < 8 ); return 0; } |
|
Monika90 |
» 2014-03-17 13:32:10 W funkcji czyBylaWylosowana porównujesz liczbę w tablicy z ilością liczb zamiast z wylosowaną liczbą do { if( tab[ i ] == wLiczb ) return true;
Może cię to nauczy żeby nie używać nazw, które są tak do siebie podobne jak wLiczb i wLiczba A jeszcze funkcja wczytaj zwraca int, powinno być void. |
|
1 « 2 » |