losowanie bez powtózeń z podanych liczb
Ostatnio zmodyfikowano 2014-03-17 13:32
maciek77 Temat założony przez niniejszego użytkownika |
losowanie bez powtózeń z podanych liczb » 2014-03-11 20:15:41 Mam do Was kolejne pytanie. Napisał jakiś tam kod ale po wpisaniu liczb program coś się wiesza, może ktoś da jakąś podpowiedź #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 ] == wLiczba ) return true; i++; } while( i < wLiczba ); return false; }
int wylosuj() { return( rand() % 2 ) + 1; }
int main() { srand( time( NULL ) ); int tablica[ 3 ]; int wylosowane[ 2 ]; int wylosowanych = 0; cout << "Podaj trzy liczby." << endl; int i = 0; do { cin >> tablica[ i ]; i++; } while( i < 3 ); do { int liczba = wylosuj(); if( czyBylaWylosowana( liczba, wylosowane, wylosowanych ) == false ) { wylosowane[ wylosowanych ] = liczba; wylosowanych++; } } while( wylosowanych < 2 ); cout << "Wylosowane liczby to " << endl; wylosowanych = 0; do { wylosowane[ wylosowanych ]; wylosowanych++; } while( wylosowanych < 2 ); return 0; } |
|
poprawka |
» 2014-03-11 20:41:22 Nie wiesza sie tylko nie wyświetla liczb. for( wylosowanych = 0; wylosowanych != 2; wylosowanych++ )
cout << "Wylosowane liczby to " << wylosowane[ wylosowanych ] << endl;
Zamień na to i liczby wylosowane się wyświetlą. A że złe to inna sprawa. Musisz wysłać tablice do funkcji losujacej. |
|
maciek77 Temat założony przez niniejszego użytkownika |
» 2014-03-11 21:12:39 ale chciałby to zrobić bez użycia for :) |
|
leon_w |
» 2014-03-11 21:51:46 No to uzyj do while, co za problem. w sumie to przed: wylosowane[ wylosowanych ]; wylosowanych++; } while( wylosowanych < 2 );
|
dodaj "cout<<" i załatwione. |
|
maciek77 Temat założony przez niniejszego użytkownika |
» 2014-03-11 22:15:36 to nic nie daje |
|
leon_w |
» 2014-03-11 22:38:13 Jak nic nie daje??? cout << "Wylosowane liczby to " << endl; wylosowanych = 0;
do { cout << wylosowane[ wylosowanych ] << endl; wylosowanych++; } while( wylosowanych < 2 );
|
|
maciek77 Temat założony przez niniejszego użytkownika |
» 2014-03-12 13:01:20 no tak, mój błąd , wypisuje liczby ale nie działa tak jak należy |
|
maciek77 Temat założony przez niniejszego użytkownika |
» 2014-03-12 14:47:53 po modyfikacji mam coś takiego ale dalej to nie to... wypisuje 2 pierwsze liczby i jak wpisze liczbę większą niż 5 to sięwiesza #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]==wLiczba) return true; i++; }while(i < wLiczba); return false; }
int wylosuj(int tab[]) { return tab[(rand() %3)]; }
int main() { srand(time(NULL)); int tablica[3]; int wylosowane [2]; int wylosowanych=0; cout << "Podaj trzy liczby." << endl; int i=0; do{ cin >> tablica[i]; i++; }while(i<3);
do{ int liczba =wylosuj(tablica); if(czyBylaWylosowana(liczba, wylosowane, wylosowanych) ==false) { wylosowane[wylosowanych]=liczba; wylosowanych++; } }while(wylosowanych<2); cout << "Wylosowane liczby to " << endl; wylosowanych=0; do{ cout << wylosowane[wylosowanych] << endl; wylosowanych++; }while(wylosowanych<2); return 0; } |
|
« 1 » 2 |