Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Losowanie liczb - własna funkcja

Ostatnio zmodyfikowano 2014-05-05 10:54
Autor Wiadomość
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:

C/C++
#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;
}
P-109319
maly
» 2014-05-05 10:19:31
srand( time( NULL ) );
 powinien być wywołany tylko raz na początku programu.
P-109320
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?
P-109321
maly
» 2014-05-05 10:28:12
W main?
P-109322
kenzol
Temat założony przez niniejszego użytkownika
» 2014-05-05 10:30:39
Niestety nie pomaga...
P-109323
maly
» 2014-05-05 10:41:23
( rand() % maxi ) + mini;
P-109324
libed
» 2014-05-05 10:54:56
Z funkcji totolotek wyrzuć niepotrzebną pętlę i argument wielkosc.
C/C++
#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;
}

P-109325
« 1 »
  Strona 1 z 1