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:)