Zakreślenie wylosowanych liczb

0

Witam,

Mam oto taki problem, iż nie wiem jak zrobić tak żeby liczby które wylosuję to zaznaczyć przy nich jakiś znak np X. Mianowicie zrobiłem kupon "czysty" i później po wylosowaniu chciałbym jeszcze zrobić kupon z zaznaczeniami wylosowanych liczb. Z tablicą dwuwymiarową nie będzie problemów ale już z zaznaczeniem jak najbardziej. Prosiłbym o poradę aczkolwiek trzeba wziąć pod uwagę iż dopiero zaczynam swoją przygodę w C. Z góry dziękuję.


 int tab[7][7];

    int i,j;

	srand(time(0));
	
	printf("         KUPON         \n");
	for(i=0; i<7; i++)
		for(j=0; j<7; j++)
			tab[i][j] = (i*7) + j + 1;
    for(i=0; i<7; i++){
		for(j=0; j<7; j++)
			printf("%3d\t",tab[i][j]);
		    printf("\n");}


printf("W dzisiejszym losowaniu Duzego Lotka wylosowano nastepujace liczby:\n");

  for (i=1; i<7; i++)
    
    printf("%d\t", 1 + rand() % 49);

0

Zanim przejdziesz jeszcze do oznaczania liczb, zwróć uwagę, że podczas losowania możliwym jest, że wylosujesz takie same liczby, bo nie sprawdzasz, czy daną liczbę już wylosowałeś. Proponuję stworzyć tablicę, w której będziesz zapisywać wylosowane liczby i przed każdym losowaniem będziesz sprawdzać, czy któraś z liczb już nie jest wylosowana. Możesz to zrobić np. za pomocą tablicy 6 intów, gdzie zapakujesz swoje wylosowane liczby, lub za pomocą tablicy 49 intów ( taka pseudo tablica boolów, gdzie niewylosowane liczby będą oznaczane jako 0, a wylosowane jako 1 )

0
  1. Źle ograniczasz zakres liczb przy losowaniu (zmniejszasz prawdopodobieństwo wystąpienia niektórych liczb).
  2. Przy małym zakresie liczb i losowaniu bez powtórzeń najłatwiej jest wziąć tablicę liczb, wymieszać je i wziąć pierwsze N.
  3. Przy większych zakresach liczb i losowaniu bez powtórzeń też są lepsze algorytmy, mianowicie Reservoir sampling

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