Losowanie bez powtórzeń - zadanie domowe.
Ostatnio zmodyfikowano 2017-07-06 21:36
bartinio07 Temat założony przez niniejszego użytkownika |
Losowanie bez powtórzeń - zadanie domowe. » 2017-07-06 16:57:02 Witam, mam problem z zadaniem domowym, które brzmi: Napisz program, który wczyta 3 liczby podane przez użytkownika do tablicy, a następnie wylosuje 2 z nich bez powtórzeń. Wynik wypisz na ekran. Postaraj się napisać ten program w oparciu o funkcje. Na początku wydawało mi się, że program działa poprawnie - jeśli podam 3 różne liczby liczby, to losuje 2 z nich bez powtórzeń, tak jak powinien. Problem pojawia się, jeśli wśród tych trzech liczb któraś się powtarza, np. jeśli wpiszę 1, 1, 2, to czasami wylosuje dwie 1. Podpowie ktoś, gdzie jest błąd? #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
bool czyWylosowana( int liczba, int tab[], int ile ) { if( ile <= 0 ) return false; int i = 0; do { if( tab[ i ] == liczba ) return true; i++; } while( i < ile ); return false; } void wypelnijTablice( int tab[], int ile ) { cout << "Podaj " << ile << " liczb: " << endl; int licznik = 0; do { cin >> tab[ licznik ]; licznik++; } while( licznik < ile ); }
int wylosuj( int start, int stop ) { return( rand() %( stop - start + 1 ) ) + start; }
int main() { srand( time( NULL ) ); int tablica[ 3 ]; wypelnijTablice( tablica, 3 ); int spr[ 2 ]; int i = 0; do { int indeks = wylosuj( 0, 2 ); spr[ i ] = indeks; if( czyWylosowana( indeks, spr, i ) == false ) { cout << tablica[ indeks ] << endl; i++; } } while( i < 2 ); return 0; }
|
|
karambaHZP |
» 2017-07-06 20:29:55 Sam pisałeś kod programu więc wiesz, że te dwie jedynki to te same wartości lecz nie te same liczby ;)
|
|
Chowan |
» 2017-07-06 21:10:50 Wydaje mi się, że chodzi o to że do tablicy dwuelementowej nie losujesz liczb ale indeksy tablicy trzyelementowej. Czyli 2 takie same liczby pod innym indeksem wejdą poprawnie do tablicy. |
|
bartinio07 Temat założony przez niniejszego użytkownika |
» 2017-07-06 21:36:22 Racja, chodziło o to, że losowałem indeksy tablicy. Nie pomyślałem, że indeksy mogą być różne, ale mieć te same wartości. Dzięki ;)
|
|
« 1 » |