losowanie bez powtórzeń, większa ilość liczb
Ostatnio zmodyfikowano 2017-02-18 17:42
Signore_Ercole Temat założony przez niniejszego użytkownika |
losowanie bez powtórzeń, większa ilość liczb » 2017-02-17 15:26:40 Cześć. Długo się nie będę rozpisywał. Napisałem program do zadań z lekcji 21 i pojawia mi sie problem przy losowaniu większej ilości liczb z wcześniej podanych. Kod działa dla małych liczb tylko. Prosze o pomoc jak go zmodyfikować bo nie daje mi to spokoju niby wszystko chodzi ale chciałbym żeby działał w 100%. Jakby się wam nie chciało kompilować to takie rzeczy wyskakują w konsoli: 4 56 789 1 48 7 5 9 10 12 Podaj ile liczb chcesz wylosowac z wczesniej podanych 8 once 001F0D80 is 729081125 once 001F0D80 is 729081125 once 001F0D80 is 729081125 once 001F0D80 is 729081125 once 001F0D80 is 150994953 Process returned 255 (0xFF) execution time : 59.401 s Press any key to continue. a oto kod #include <iostream> #include <ctime> #include <cstdlib> using namespace std;
void wczytaj( int tab[], int ile ) { bool juz_byla; int losowana = 0; cout << "Podaj " << ile << " liczby" << endl; for( int i = 1; i <= ile; i++ ) { do { int liczba; cin >> liczba; juz_byla = false; for( int i = 1; i <= losowana; i++ ) { if( tab[ i ] == liczba ) { juz_byla = true; cout << "Taka liczba juz podano!" << endl; } } if( juz_byla == false ) { losowana++; tab[ losowana ] = liczba; } } while( juz_byla == true ); } }
void pokaz( int tab[], int ile ) { for( int i = 1; i <= ile; i++ ) { cout << tab[ i ] << endl; } }
void tab_a_z_tab_b( int tab_a[], int ile_a, int tab_b[], int ile_b ) { bool juz_byla; int losowana = 0; for( int i = 1; i <= ile_a; i++ ) { do { int liczba = tab_b[ rand() % ile_b ]; juz_byla = false; for( int i = 1; i <= losowana; i++ ) { if( tab_a[ i ] == liczba ) juz_byla = true; } if( juz_byla == false ) { losowana++; tab_a[ losowana ] = liczba; } } while( juz_byla == true ); } }
int main() { int ile_liczb_a, ile_liczb_b; cout << "Podaj ile liczb chcesz podac" << endl; cin >> ile_liczb_b; int * tablica_b = new int[ ile_liczb_b ]; wczytaj( tablica_b, ile_liczb_b ); cout << endl; pokaz( tablica_b, ile_liczb_b ); cout << "Podaj ile liczb chcesz wylosowac z wczesniej podanych" << endl; cin >> ile_liczb_a; int * tablica_a = new int[ ile_liczb_a ]; tab_a_z_tab_b( tablica_a, ile_liczb_a, tablica_b, ile_liczb_b ); cout << endl; pokaz( tablica_a, ile_liczb_a ); return 0; }
|
|
Signore_Ercole Temat założony przez niniejszego użytkownika |
» 2017-02-17 17:52:49 aa. Siedze, i patrze a zapomniałem dopisać tej funkcji w main: srand( time( NULL ) ) . Lecz nie wiele to zmienia |
|
Signore_Ercole Temat założony przez niniejszego użytkownika |
» 2017-02-18 17:42:12 błąd był w iteracji -> do zamknięcia. |
|
« 1 » |