Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Zadatak]Mali Problem sa funkcijom srand u Klasi

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak]Mali Problem sa funkcijom srand u Klasi

[ Pregleda: 3343 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

negative7
Ivan Raic

Član broj: 186110
Poruke: 151
*.scst.hr.



Profil

icon [Zadatak]Mali Problem sa funkcijom srand u Klasi13.03.2010. u 15:57 - pre 171 meseci
Najbolji bi bilo da pokrenete kod,jer nisam siguran kako bi najbolje objasnio.Program radi tacno samo je problem u tome sto
u main-u uvjek nakon sto napravim objekt tipa Loto dobijem iste brojeve lota i u objektu L i u objektu L1...Problem rijesim ako prije ispisa brojeva lota u objektu L1 pozovem funkciju SetNumbers u main-u,ali postoji li ikakvo drugo rijesenje,A npr kad imam Lx(x,y) nedesava se taj problem.jel moze netko objasnit zasto i popravit na drugi nacin bez setnumbers. Evo koda:

Code:

#include<iostream>
#include<time.h>

using namespace std;

class Loto
{
private:
    int _n,_max;
    int *_num;
    int _reserve_num;
    int Random(int min,int max)
    {
        return rand()%(max-min+1)+min;
    }
public:
    void init(int n,int max)
    {
        _n=n;
        _max=max;
        _num=new int[_n];
        srand(time(NULL));
        SetNumbers();
    }
    
    Loto(int x,int max)
    {
        init(x,max);
    }
    Loto(int x)
    {
        init(x,39);
    }
    Loto()
    {
        init(6,39);
    }
    ~Loto()
    {
        free(_num);
    }
    void SetNumbers()
    {
        for(int i=0;i<_n;i++)
        {
            _num[i]=Random(1,_max);
        }
        _reserve_num=Random(1,_max);
    }
    int *GetArrayofNumbers()
    {
        return _num;
    }
    int GetReserveNumber()
    {
        return _reserve_num;
    }
    friend ostream& operator<<(ostream &out, Loto &L)
    {
        for(int i=0;i<L._n;i++)
        {
            out<<L._num[i];
            if(i<L._n-1)
            {
                out<<",";
            }
        }
        out<<" ("<<L._reserve_num<<")"<<endl;
        return out;
    }
};
void main()
{
    Loto L,L1(12),L2(15,100),L3,L4(10);
    L1.SetNumbers();
    cout<<L<<L1<<L2<<L3<<L4;
}


Sorry ako sam bad objasnio o cemu je rijec
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: [Zadatak]Mali Problem sa funkcijom srand u Klasi13.03.2010. u 17:48 - pre 171 meseci
Ovo srand(time()) moraš da pozoveš samo jednom, na početku rada programa. Ono što se dešava je da svaki put kad stvoriš novi Loto objekat ti pozoveš funkciju srand, ali pošto se sve to dešava u deliću milisekunde onda funkcija time uvek vrati istu vrednost, i zato srand uvek proizvodi isti pseudoslučajni niz. Kad posle kreiranja svih Loto objekata pozoveš L1.SetNumbers() onda se nije pozvao srand() nego se prosto uzimaju sledeći brojevi iz pseudoslučajne sekvence, i zato to ispadne različito.

Premesti srand da bude prva funkcija unutar main.
 
Odgovor na temu

negative7
Ivan Raic

Član broj: 186110
Poruke: 151
*.scst.hr.



Profil

icon Re: [Zadatak]Mali Problem sa funkcijom srand u Klasi13.03.2010. u 18:22 - pre 171 meseci
Zahvaljujem,premjestio sam, sad je dobro,thx
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: [Zadatak]Mali Problem sa funkcijom srand u Klasi13.03.2010. u 19:14 - pre 171 meseci
Uzgred, trenutno može da ti se desi da u jednom izvlačenju imaš dva ista broja. Treba da dodaš kod koji će ponavljati generisanje novog slučajnog broja sve dok ne dobiješ slučajan broj koji u tom izvlačenju još nisi dobio.
 
Odgovor na temu

negative7
Ivan Raic

Član broj: 186110
Poruke: 151
*.scst.hr.



Profil

icon Re: [Zadatak]Mali Problem sa funkcijom srand u Klasi14.03.2010. u 10:07 - pre 171 meseci
A,nisam ni primjetio jbga,dobro a jel mozda neko zna kako mogu pozvat konstruktor iz drugog konstruktora,tako da ne koristim ovu funkciju init.I jos jedna stvar
jel moguce da promijenim boju slova,da ne budu vazda bijela kad pokrenem program.Ako je jel moze netko nadopisat taj potrebni kod.Znam da se netice ove teme ali da sad ne otvaram drugu temu.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: [Zadatak]Mali Problem sa funkcijom srand u Klasi14.03.2010. u 10:36 - pre 171 meseci
U C++ ne možeš da zoveš jedan konstruktor iz drugog (u C# možeš, verovatno i u Javi). Ovo rešenje sa init je upravo onako kako se radi u C++.

Što se tiče boje, donji kod sam našao na CodeProject, ali nemam pojma da li radi. Koristiš ga recimo ovako cout << color(FOREGROUND_BLUE | FOREGROUND_GREEN) << "neki cijan tekst";

Za bliže objašnjenje u vezi sa SetConsoleTextAttribute počni od sledećeg linka http://msdn.microsoft.com/en-us/library/ms682088%28VS.85%29.aspx

Code:

struct color {
    color(WORD attribute):m_color(attribute){};
    WORD m_color;
};

template <class _Elem, class  _Traits> std::basic_ostream<_Elem,_Traits>&
operator<<(std::basic_ostream<_Elem,_Traits>& i, const color& c)
{
    HANDLE hStdout=GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdout,c.m_color);
    return i;
}
 
Odgovor na temu

negative7
Ivan Raic

Član broj: 186110
Poruke: 151
*.scst.hr.



Profil

icon Re: [Zadatak]Mali Problem sa funkcijom srand u Klasi14.03.2010. u 12:13 - pre 171 meseci
Aha,hvala na informisanju,kod sam probo neradi mi al nema veze supat cu jos,a evo jos jedno pitanje.Jel u c++ ili c# moguce ovo:
Recimo ja imam sliku(model) rotora ili parne turbine nesto slicno napravljenu u Cinema 4D ili nekom drugom programu za crtanje,i sad jel ja mogu ubacit tu sliku u c# ili c++ i napravit animaciju simulaciju bilo sto da mi se vrti taj rotor ili turbina koji sam napravio u nekom drugom programu.Pitam samo jel moguce.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: [Zadatak]Mali Problem sa funkcijom srand u Klasi14.03.2010. u 12:33 - pre 171 meseci
Nemam tačnu predstavu šta je to slika napravljena u Cinema 4D, ali odgovor na pitanje "da li je nešto moguće u C++" je skoro uvek DA. Stvar je u tome što to nije pravo pitanje. Pravo pitanje je "koliko mi vremena treba da to napravim". E tu ti ne mogu pomoći.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: [Zadatak]Mali Problem sa funkcijom srand u Klasi14.03.2010. u 12:37 - pre 171 meseci
Uzgred, meni radi ovaj kod iz CodeProject. Treba samo da staviš #include <windows.h> da bi mogle da se koriste te stvari vezane specifično za Windows.
 
Odgovor na temu

negative7
Ivan Raic

Član broj: 186110
Poruke: 151
*.scst.hr.



Profil

icon Re: [Zadatak]Mali Problem sa funkcijom srand u Klasi14.03.2010. u 12:54 - pre 171 meseci
A,evo ga radi i meni sad,nisam prije nikad radio nista slicno pa nisam znao za windows.h pocetnik sam
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak]Mali Problem sa funkcijom srand u Klasi

[ Pregleda: 3343 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.