Program do macierzy 5x5 ma w wiersze nieparzyste losowa liczbe nieparzysta a w wiersze parzyste losowa parzysta

0

Witam
Niby wszystko działa ale liczby niezbyt "ładne", wychodzi chyba poza inta,nw jak to naprawić, chciałem,żeby były to liczby z przedziału 10-100 ale jak widać w załączniku nie wszystkie się podporządkowały.

int main()
{
    srand(time(NULL));
    int i,j,a;
    int tab[5][5];
    
    		for(i=0;i<5;i++)
    		{
    			
    			for(j=0;j<5;j++)
    			{
    				a=10+rand()%100;
    				if(a%2==0)
    					{
    						if(i%2==0)
    						{
    							tab[i][j]=a;
							}
						}
					if(a%2!=0)
					{
							if(i%2!=0)
							{tab[i][j]=a;
							}
					}
				}
			}
			
			
		for(i=0;i<5;i++)
    		{
    		
    			for(j=0;j<5;j++)
    			{
    				printf("%d\n",tab[i][j]);
				}
			}
			
		
    
	
            return 0;
}
1

Masz nie zainicjalizowane komórki do których nie przypisałeś żadnej wartości, dlatego znajdują się w nich "śmieciowe" liczby. W obecnym stanie, żeby wypełnić całą macierz, rand musiałby ci losować zawsze parzystą liczbę w momencie kiedy index i jest parzysty i nieparzystą gdy jest nieparzysty.
int tab[5][5] = {}; wypełni całą macierz zerami i będzie ci łatwiej debugować :)
Jeśli możesz pisać w standardzie C99 to deklaruj zmienne jak najbliżej ich miejsca użycia:

for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) {
    }
}

zamiast

int i, j;
for (i = 0; i < 5; i++) {
    for (j = 0; j < 5; j++) {
    }
}

Tak jest czytelniej i jest mniejsza szansa, że gdzieś sobie tą zmienna nadpiszesz.

0

Dziękuję, za podpowiedź jak najbardziej wyzerowanie macierzy pomoglo w jakimś stopniu, liczby co do wierszy parzystych i nieparzystych przypisuje odpowiednie jest natomiast problem, że zbyt dużo zer pojawia się jak na moje zdanie, jakby niektóre wiersze zostały pominięte. Jakieś dodatkowe sugestie ?
załączam screen z konsoli dla wglądu.

0

Możesz, jeśli wiersz jest parzysty/nieparzysty, losować liczbę w pętli tak długo aż będzie odpowiadała ci jej parzystość.

0

Możesz też utworzyć dwie tablice pomocnicze:

even_numbers = {10,12,...,100};
odd_numbers = {11,13,...,99};

i losować indeks. A liczbę odczytywać z odpowiedniej tablicy.

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