Losowanie liczb - własna funkcja
Ostatnio zmodyfikowano 2014-05-05 10:54
kenzol Temat założony przez niniejszego użytkownika |
Losowanie liczb - własna funkcja » 2014-05-05 10:08:19 Mam problem z programem losującym liczby. Program został napisany z użyciem własnej funkcji. Wiem, że można go było napisać w inny sposób, ale w tej chwili ćwiczę używanie funkcji, więc tylko tę metodę biorę pod uwagę. Problem polega na tym, że w efekcie, po podaniu zakresu oraz ilości liczb jakie mają zostać wylosowane, program losuje wciąż te same liczby. Proszę o pomoc: #include <iostream> #include <ctime> #include <cstdlib>
using namespace std;
int i, lmin, lmax, ile_liczb;
int totolotek( int mini, int maxi, int wielkosc ) { srand( time( NULL ) ); int tab[ i ]; for( int i = 0; i < wielkosc; i++ ) { tab[ i ] =( rand() % mini ) + maxi; return tab[ i ]; } }
int main() { cout << "dolna granica losowania: "; cin >> lmin; cout << "gorna granica losowania: "; cin >> lmax; cout << "Ile liczb wylosowac? "; cin >> ile_liczb; for( int i = 0; i < ile_liczb; i++ ) { cout << i + 1 << ": " << totolotek( lmin, lmax, ile_liczb ) << endl; } return 0; }
|
|
maly |
» 2014-05-05 10:19:31 srand( time( NULL ) ); powinien być wywołany tylko raz na początku programu. |
|
kenzol Temat założony przez niniejszego użytkownika |
? » 2014-05-05 10:27:30 Czyli gdzie wcisnąć tę komendę? Próbuje i gdziekolwiek ją wstawię to dalej losuje mi te same liczby... Może z funkcją jest coś nie tak? |
|
maly |
» 2014-05-05 10:28:12 W main? |
|
kenzol Temat założony przez niniejszego użytkownika |
» 2014-05-05 10:30:39 Niestety nie pomaga... |
|
maly |
» 2014-05-05 10:41:23 ( rand() % maxi ) + mini; |
|
libed |
» 2014-05-05 10:54:56 Z funkcji totolotek wyrzuć niepotrzebną pętlę i argument wielkosc. #include <iostream> #include <ctime> #include <cstdlib>
using namespace std;
void ReadInt( const char * desc, int & value ) { do { cin.clear(); cin.sync(); cout << desc; cin >> value; if( !cin ) cout << "Podales niepoprawna wartosc. Sprobuj jeszcze raz\n"; } while( !cin ); }
int * CreateTable( int min, int max, unsigned int size ) { int * ptr = new int[ size ]; for( unsigned int i = 0; i < size; ++i ) ptr[ i ] = rand() %( max - min ) + min; return ptr; }
void Print( const int * const ptr, unsigned int size ) { for( unsigned int i = 0; i < size; ++i ) cout << "Liczba[" << i << "]: " << ptr[ i ] << "\n"; }
int main( int argc, char ** argv ) { int dol, gora, rozmiar; ReadInt( "Podaj dolna granice: ", dol ); ReadInt( "Podaj gorna granice: ", gora ); ReadInt( "Podaj ilosc liczb do wylosowania: ", rozmiar ); srand( time( NULL ) ); int * numbers = CreateTable( dol, gora, rozmiar ); Print( numbers, rozmiar ); delete[] numbers; return 0; }
|
|
« 1 » |