Dlaczego program czasami działa, a czasami nie?

0
int main()
{
	int k, w, licznik = 0;
	string pierw;
	string kolory[4] = { "czerwo","dzwonek","trefl","wino" };
	string wartosci[13] = { "as", "krol", "dama", "walet", "dziesiatka", "dziewiatka", "osemka", "siodemka", "szostka", "piatka", "czworka", "trojka", "dwojka" };
	srand(time(NULL));
	for (int i = 0; i < 5; i++) {
		k = rand() % 4;
		w = rand() % 13-i;
		cout << kolory[k] << " " << wartosci[w] << endl;
		swap(wartosci[w], wartosci[12 - i]);
	}
	system("PAUSE");
	return 0;
}

Czy mógłby mi ktoś wytłumaczyć dlaczego ten program czasami działa, a czasami się sypie ?

4

w = rand() % 13-i;
zwraca Ci też liczby ujemne (a takie nie mogą być indeksami), bo liczysz rand() % 13, a od tego odejmujesz i. Bardziej chodziło Ci pewnie o w = rand() % (13-i);.

0

oooo już jest pięknie, dziękuję bardzo

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