Problem ze sprawdzeniem, czy liczba została już wcześniej wylosowana
Ostatnio zmodyfikowano 2016-02-13 14:29
krzychu_ten Temat założony przez niniejszego użytkownika |
Problem ze sprawdzeniem, czy liczba została już wcześniej wylosowana » 2016-02-13 12:13:37 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. Witam. Poniższy program ma taki problem, że w momencie gdy wylosowuje taką samą liczbę nie idzie dalej, zamiast wylosować kolejną liczbę. Proszę o pomoc, bo patrze na ten kod i nic nie widzę :-) #include <iostream> #include <cstdlib> #include <ctime>
int wpisz( int tab[], int ile ) { int i = 0; do { std::cout << "Liczba " << i + 1 << ": "; std::cin >> tab[ i ]; i++; } while( i < ile ); }
int wypisz( int tab[], int numery[], int ile ) { int i = 0; do { std::cout << tab[ numery[ i ] ] << ", "; i++; } while( i < ile ); }
int wylosuj() { return( rand() % 3 ); }
bool czy_byla( 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; }
int main() { srand( time( NULL ) ); int tablica[ 3 ]; wpisz( tablica, 3 ); int numery[ 2 ]; int wylosowane = 0; do { int los = wylosuj(); std::cout << los << std::endl; if( czy_byla( los, numery, wylosowane ) == false ) numery[ wylosowane ] = los; wylosowane++; } while( wylosowane < 2 ); std::cout << "Wylosowane liczby to: "; wypisz( tablica, numery, 2 ); return 0; }
|
|
carlosmay |
» 2016-02-13 14:29:16 tą zmienną inkrementuj tylko gdy zapisujesz liczbę do tablicy. Inaczej przy powtórzeniu się liczby wychodzisz indeksami poza tablicę. int wpisz( int tab[], int ile ) { }
int wypisz( int tab[], int numery[], int ile ) { } |
te funkcje nie zwracają niczego. Zmień typ wartości zwracanej przez funkcje. |
|
« 1 » |