Strano output prodotto matrici

di il
3 risposte

Strano output prodotto matrici

Salve a tutti,
sto facendo un programmino per calcolare le matrici.

main ():
void Prod_Matrix (double X[][3], double Y[][3], int r1, int c1, int r2, int c2);

int main() {

	int i, j, r1=2, c1=3, r2=3, c2=3, c3=1;

double X [2][3] =   {{1,1,2},
			 {0,1,-3}},

	    Y [3][3] =   {{1,1,1},
		             {2,5,1},
        		    {0,-2,1}};

	printf ("La matrice X è:\n");


	for (i=0; i<r1; i++)
	for (j=0; j<c1; j++){
	printf ("%f;",X[i][j]);
	if (j==2)
	printf (";\n");
	}

	printf ("La matrice Y è:\n");

	for (i=0; i<r2; i++)
	for (j=0; j<c2; j++){
	printf ("%f;",Y[i][j]);
	if (j==2)
	printf (";\n");
	}

	Prod_Matrix (X, Y, 2, 3, 3, 3); 	//chiamo la funzione che moltiplica le matrici

	return 0;
}
Questa è la funzione che calcola un semplice prodotto:
void Prod_Matrix (double a[][3], double b[][3], int r1, int c1, int r2, int c2)
{

int i, j, k;
double prod [2][3];


for (i=0; i < r1; i++)
for (j=0; j < c2; j++)
for (k=0; k < c1; k++)
prod[i][j] += a[i][k] * b[k][j];

printf ("Il prodotto tra le matrici è:\n");


	for (i=0; i<2; i++)
	for (j=0; j<3; j++){
	printf ("%f;",prod[i][j]);
	if (j==2)
	printf (";\n");
	}

}
I valori delle matrici li ho presi dall'esempio presente su wikipedia (in fondo).
https://it.wikipedia.org/wiki/Moltiplicazione_di_matrici

L'output è questo:
La matrice X è:
1.000000;1.000000;2.000000;;
0.000000;1.000000;-3.000000;;
La matrice Y è:
1.000000;1.000000;1.000000;;
2.000000;5.000000;1.000000;;
0.000000;-2.000000;1.000000;;
Il prodotto tra le matrici è:
3.000000;188787654703962990000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000;208802811801130750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000;;
2.000000;11.000000;-2.000000;;
Come si può vedere dall'esempio di wikipedia 4 risultati su 6 sono corretti.
1)Perchè viene cosi?
2)Perchè se cambio il tipo di dato delle matrici da double a int mi viene tutti 0.

Sto usando Eclipse con builder CDT Internal Builder e toolchain MinGW GCC.

Grazie per l'aiuto.

3 Risposte

Devi accedere o registrarti per scrivere nel forum
3 risposte