Rozdział 21. Problem z losowaniem z tablicy lub sprawdzaniem.
Ostatnio zmodyfikowano 2016-09-10 07:58
kamillo Temat założony przez niniejszego użytkownika |
Rozdział 21. Problem z losowaniem z tablicy lub sprawdzaniem. » 2016-09-08 22:01:59 Witam, od dłuższego czasu nie mogę sobie poradzić z wylosowaniem dwóch zmiennych z tablicy i sprawdzeniem czy się nie powtarzały wcześniej. Czego bym nie próbował, to program albo wypisuje dwie pierwsze wpisane liczby, albo powtarza dwie liczby. Z góry dziękuje za pomoc ;) #include <iostream> #include <ctime> #include <cstdlib> using namespace std;
void wczytywanie( int tablica[], int pozycja ) { cout << " Podaj trzy liczby" << endl; int i = 3; do { cin >> tablica[ pozycja ]; cin.clear(); cin.sync(); pozycja++; } while( i > pozycja ); }
int losowanie( int tablica[] ) { return tablica[ rand() % 2 ]; }
bool sprawdzanie( int tablica[], int pozycja, int wylosowana ) { if( pozycja <= 0 ) return false; int i = 0; do { if( tablica[ i ] == wylosowana ) return true; i++; } while( i < pozycja ); return false; }
void wypisywanie( int tablica[], int pozycja ) { cout << "wylosowane liczby to:" << endl; do { cout << tablica[ pozycja ] << ", " << endl; pozycja++; } while( pozycja < 2 ); }
int main() { srand( time( 0 ) ); int tablica[ 3 ]; int pozycja = 0; wczytywanie( tablica, pozycja ); do { int wylosowana = losowanie( tablica ); if( sprawdzanie( tablica, pozycja, wylosowana ) == false ) tablica[ pozycja ] = wylosowana; pozycja++; } while( pozycja < 3 ); pozycja = 0; wypisywanie( tablica, pozycja ); return 0; }
|
|
kamillo Temat założony przez niniejszego użytkownika |
» 2016-09-10 07:58:28 Udało mi się w końcu dojść do tego. Rozwiązaniem problemu bylo zrobienie dodatkowej tablicy na liczby sprawdzone, bo program przy wypisywaniu się gubił i wypisywał wpisaną tablicę bez losowania oraz zwiększenie (nie wiem czemu) przedziału losowania z 2 do 3. Wiem, że odpisuje sam sobie, ale myślę, że nie tylko ja miałem taki problem ;) #include <iostream> #include <ctime> #include <cstdlib> using namespace std;
void wczytywanie( int tablica[], int pozycja ) { cout << " Podaj trzy liczby" << endl; int i = 3; do { cin >> tablica[ pozycja ]; cin.clear(); cin.sync(); pozycja++; } while( i > pozycja ); }
int losowanie( int tablica[] ) { return tablica[ rand() % 3 ]; }
bool sprawdzanie( int tablica[], int pozycja, int wylosowana ) { if( pozycja <= 0 ) return false; int i = 0; do { if( tablica[ i ] == wylosowana ) return true; i++; } while( i < pozycja ); return false; }
void wypisywanie( int tablica[], int pozycja ) { cout << "wylosowane liczby to:" << endl; do { cout << tablica[ pozycja ] << ", " << endl; pozycja++; } while( pozycja < 2 ); }
int main() { srand( time( 0 ) ); int tablica[ 3 ]; int pozycja = 0; int sprawdzone[ 2 ]; int i = 0; wczytywanie( tablica, pozycja ); do { int wylosowana = losowanie( tablica ); if( sprawdzanie( sprawdzone, i, wylosowana ) == false ) sprawdzone[ i ] = wylosowana; i++; } while( i < 3 ); i = 0; wypisywanie( sprawdzone, i ); return 0; }
|
|
« 1 » |