[Rozdział 21] - Losowanie bez powtórzeń.
Ostatnio zmodyfikowano 2014-03-17 16:09
snoozee Temat założony przez niniejszego użytkownika |
[Rozdział 21] - Losowanie bez powtórzeń. » 2014-03-17 01:32:08 Cześć. Mam kolejny problem. Zadanie polega na wprowadzeniu 10 liczb a następnie wylosowaniu 7 z nich (niepowtarzających się!!!). Wszystko już mam, jednak wylosowane liczby się powtarzają. Nie wiem czemu. Mógłby ktoś mi pomóc? Pozdrawiam. #include <iostream> #include <ctime> #include <cstdlib> using namespace std;
void wprowadzenieLiczb( int t[] ) { cout << "Wprowadz 10 liczb, kazda zatwierdz ENTER. " << endl; int i = 0; do { cin >> t[ i ]; i++; } while( i < 10 ); }
bool sprawdzenie( int liczba, int t[], int ile ) { if( ile <= 0 ) return false; int i = 0; do { if( t[ i ] == liczba ); return true; i++; } while( i < ile ); return false; }
void wypisanieLiczb( int t[] ) { cout << "7 wylosowanych liczb to: " << endl; int i = 0; do { cout << i << ". " << t[ i ] << endl; i++; } while( i < 7 ); } int losowanie( int t[] ) { return t[ rand() % 10 ]; }
int main() { srand( time( NULL ) ); int tablicaPodanychLiczb[ 10 ]; int tablicaWylosowanychLiczb[ 7 ]; int ile = 0; int liczba; wprowadzenieLiczb( tablicaPodanychLiczb ); do { liczba = losowanie( tablicaPodanychLiczb ); if( sprawdzenie( liczba, tablicaPodanychLiczb, ile ) == false ); { tablicaWylosowanychLiczb[ ile ] = liczba; ile++; } } while( ile < 7 ); wypisanieLiczb( tablicaWylosowanychLiczb ); system( "Pause" ); }
|
|
leon_w |
» 2014-03-17 16:09:04 1.Do funkcji sprawdzającej, wysyłaj tablicę z wylosowanymi liczbami a nie z podanymi. 2. Po if() nie daje się średnika. |
|
« 1 » |