Rozdział 21. Losowanie bez powtórzeń.
Ostatnio zmodyfikowano 2017-04-11 22:34
Andy20 Temat założony przez niniejszego użytkownika |
Rozdział 21. Losowanie bez powtórzeń. » 2017-04-11 22:05:14 Witam, Treść zadania: 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. Mój kod: Analizowałem ten kod kilkukrotnie, ale nadal nie rozwiązałem mojego problemu. Liczby są wypisywane za pomocą wylosowanego indeksu tablicy, ale zdarza się, że program wypisuje 2 razy tą samą wartość. Proszę o jakąś podpowiedź. :) #include <iostream> #include <ctime> #include <cstdlib>
void wczytaj( int tab[] ); int losuj(); bool czy_byla_wylosowana( int liczba, int tab[] );
int main() { srand( time( NULL ) ); int moja_tablica[ 3 ], wylosowane[ 2 ]; std::cout << "Wczytaj 3 liczby calkowite\n"; wczytaj( moja_tablica ); int i = 0; do { int liczba = losuj(); if( czy_byla_wylosowana( liczba, wylosowane ) == false ) { wylosowane[ i ] = moja_tablica[ liczba ]; i++; } } while( i < 2 ); i = 0; std::cout << "Wylosowane liczby to: "; do { std::cout << wylosowane[ i ] << " "; i++; } while( i < 2 ); system( "pause" ); return 0; }
void wczytaj( int tab[] ) { int i = 0; do { std::cin >> tab[ i ]; i++; } while( i < 3 ); }
int losuj() { return rand() % 3; }
bool czy_byla_wylosowana( int liczba, int tab[] ) { int i = 0; do { if( tab[ i ] == liczba ) return true; i++; } while( i < 2 ); return false; }
|
|
maly7 |
» 2017-04-11 22:27:40 if( czy_byla_wylosowana( moja_tablica[ liczba ], wylosowane ) == false ) Do funkcji przekazuj liczbę a nie indeks. |
|
Andy20 Temat założony przez niniejszego użytkownika |
» 2017-04-11 22:34:38 Dzięki :)
|
|
« 1 » |