Inicjalizacja tablicy obiektów

0

Witam wszystkich. Napisałem sobie dla zabawy mały programik.
Oto jego istotniejsze elementy:

#ifndef PALEC_H
#define PALEC_H
#include<iostream>
using namespace std;
//******************************************************

class palec
{
public:
    int aktualna_pozycja;   //to nieistotne
    int kolejnosc[16];      //tablica przechowujaca wylosowane liczby

    palec(void);

    int losuj(int los_od, int los_do);
    void los_bez_pow(int tab[]);
};
#endif
 
#include<cstdlib>
#include<ctime>
#include<string>
#include"palec.h"
//******************************************************
palec::palec(void)
{
    los_bez_pow(kolejnosc);
}
//////////////////FUNKCJA LOSUJACA////////////////////
int palec::losuj(int los_od, int los_do)
{
    srand( time( NULL ) );
    int liczba;
    liczba = (rand() % (los_do - los_od + 1)) + los_od;
    return liczba;
}
////////////FUNKCJA LOSUJACA BEZ POWTORZEN////////////
void palec::los_bez_pow(int tab[])
{
    int max = 15;
    int tab_pom[16];
    for(int i = 0; i < 16; i++)
    {
        tab_pom[i] = i + 1;
    }
    for(int i = 0; i < 16; i++)
    {
        int ktory = losuj(0,max);
        tab[i] = tab_pom[ktory];

        if(max != ktory)
        {
            tab_pom[ktory] = tab_pom[max];
        }
        max--;
    }
}
#include"tabela.h"
#include"palec.h"

//******************************************************
int losuj(int od, int ilosc_liczb);
int main()
{
    palec wyraz[10];    //tablica obiektow "palec"

    for(int i=0;i<10;i++)
    cout<<wyraz[i].kolejnosc[1]<<endl;   //wszystkie elementy tablicy maja ta sama wartosc 
                                        //tu dla przykladu akurat 
                                        //drugie elementy tablic obiektow tablicy

}

Problem polega na tym że wszystkie tablice "kolejnosc" są inicjalizowane takimi samymi wartościami jak ta w pierwszym obiekcie.
Gdy wykonuje program krok po kroku to wszystko jest ok. Każda tablica jest losowana osobno. Przy normalnym uruchomieniu już tak nie jest.
Próbowałem zdefiniować tablice obiektów przez listę inicjalizatorów z konstruktorami , ale nic się nie zmieniło.
Proszę o wyrozumiałość jeśli rozwiązanie jest banalne:)

0

srand używaj tylko raz w całym programie. Jak tam możesz zauważyć, inicjalizujesz ziarno czasem. Gdy kod wykonywany jest w iteracjach natychmiast, czas tak jakby nie zdąży się zmienić i ziarno jest takie samo.

0

No tak, przecież to logiczne... Wszystko działa. Dzięki za szybką odpowiedź.

1 użytkowników online, w tym zalogowanych: 0, gości: 1