Cześć wszystkim! Temat zakładam, gdyż inne o tasowaniu nie odpowiedziały na moje pytania. Wykonuję projekt gry "wojna", jestem na etapie algorytmu tasującego karty. Posługuję się tablicą dwuwymiarową:
int tab1[52][3]=
{{2,0,1},{2,0,2},{2,0,3},{2,0,4},
{3,0,1},{3,0,2},{3,0,3},{3,0,4},
{3,0,1},{3,0,2},{3,0,3},{3,0,4},
{4,0,1},{4,0,2},{4,0,3},{4,0,4},
{5,0,1},{5,0,2},{5,0,3},{5,0,4},
{6,0,1},{6,0,2},{6,0,3},{6,0,4},
{7,0,1},{7,0,2},{7,0,3},{7,0,4},
{8,0,1},{8,0,2},{8,0,3},{8,0,4},
{9,0,1},{9,0,2},{9,0,3},{9,0,4},
{10,0,1},{10,0,2},{10,0,3},{10,0,4},
{11,0,1},{11,0,2},{11,0,3},{11,0,4},
{12,0,1},{12,0,2},{12,0,3},{12,0,4},
{13,0,1},{13,0,2},{13,0,3},{13,0,4}
};
Pierwsza kolumna: figura karty;
Druga kolumna: wartości 0 (karta nie była tasowana) i 1(karta była tasowana);
Trzecia kolumna: kolor karty;
Oto kod tasowania:
int los = 0;
int tabtemp[52][3]; //tablica pomocnicza do zmiany wartosci
for(int i = 0 ; i<52 ; i++)
{
los = (rand()%52)+0; //losujemy dana liczbe z przedzialu i przypisujemy ja do zmiennej los
for(int j = 0 ; j<3 ; j++)
{
if((tab1[los][1])==0) //sprawdzenie czy dana karta byla juz losowana (sprawdzajac druga kolumne)
{
tab1[i][j] = tabtemp[los][j]; //tasowanie
tab1[i][1]=1; //zmiana kolumny drugiej na wartość 1, żeby wiersz nie był więcej tasowany;
cout << "WIERSZ(i): " << los << " AND KOLUMNA(j): " << j << " WYNOSI " << tab1[los][j] << endl;
}
}
}
Problem polega na tym, że tasowane karty powtarzają się, pomimo warunku. Nie potrafię stwierdzić, gdzie leży przyczyna błędu. Próbowałem także wrzucić ten warunek jeszcze w pierwszej pętli, by druga wykonała się tylko przy spełnieniu go, ale wtedy także niczym to nie poskutkowało. Proszę Was o pomoc ;)