Tabliczka mnożenia na tablicach dwuwymiarowych

0

Siemka. Mam napisać tabliczkę mnożenia o wymiarach 11x11 i ma zaczynać się od 0. Gdzie jest błąd i jak go poprawić? Mój kod to:

#include <stdio.h>

int main()
{
	int tab[11][11];
	int i,j;
	for(i=0;i<10;i++)
	{
		for(j=0;j<10;j++)
			tab[i][j]=i*j;
	}
	for(i=0;i<10;i++)
	{
		printf("%3d", tab[i][j]);
		for(j=0;j<10;j++)
			printf("%3d", tab[i][j]);
		printf("\n");
	}
	return 0;
}

Z góry dzięki za pomoc.

1

Masz jakieś tab[11[11] zamiast tablicy dwuwymiarowej. Iteracja z warunkiem <10 znaczy, że do 9. printf po i jest zbędny, nie wiem dlaczego tam dałeś.

1

W tym miejscu:

printf("%3d", tab[i][j]);

Używasz j które ma wartość 10 z poprzedniej pętli. Ten indeks jest w obszarze Twojej tablicy ale nigdy tam nic nie zapisywałeś i z tego powodu odczytujesz śmieci.

Staraj się ograniczać widoczność zmiennych jak tylko to możliwe. Zamiast deklarować i i j na samej górze funkcji (tak jak w C89, jeśli dobrze pamiętam) zadeklaruj je w for:

for (int i = 0; ...)
1

Jeżeli miałbyś napisać tabliczkę która liczy od 1 to wystarczyłoby lekko zmodyfikować twoją metodę:

tab[i][j]=(i+1)*(j+1);

i skasować pierwszego printfa w drugiej pętli.
Napisanie tabliczki "od zera" trochę komplikuje sprawę, bo według twojej metody wychodzi na to że 0*0 = 1.

Spróbuj najpierw napisać od 1 do 11 a potem pomyśl jak dorobić 0.

0

Tabliczka mnożenia do 10 raczej nie przewiduje mnożenia przez 0 – trochę to sensu nie ma. Z tego co widzę, największym problemem jest opanowanie narzuconego przez język indeksowania macierzy od 0. ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.