Hola! en este momento no te puedo ayudar con el codigo... pero si no me equivoco multiplicar dos matrices tiene propiedades, fijate si las encontras xq no me acuerdo cuales eran.
Igual t dejo un codigo que hic hace un par de meses; un poco dificil de entenderlo pero bueno te lo dejo igual
Código C:
Ver originalint esProducto(int j,int m);
int ** matrizProducto(int mat1[][COLUMNA_M],int mat2[][COLUMNA_M],int iFila,int jCol,int mFila,int nCol)
{
int x;
int i=0,j; /* indices para la matriz 1 */
int m,n=0; /* indices para la matriz 2 */
//int auxMat[iFila][nCol];
int cant=0; /* acumulador */
int num=0;
int **auxMat=NULL; /* declaro un puntero a puntero que es la matriz resultante del producto */
/* la matriz aux va a ser de dimension iFila*nCol */
auxMat
=(int **)malloc(sizeof(int)*nCol
); /* le asigno la cantidad de columnas (nCol) */ for(x=0;x<nCol;x++)
auxMat
[x
]=(int *)malloc(sizeof(int)*iFila
); /* a cada columna le asigno iFilas */ int s=0,p=0; /* indices para la matriz auxiliar */
if(esProducto(jCol,mFila)) /* si se puede multiplicar entra al if */
{
while(cant!=(iFila*nCol)) { /* mientra no sea fin del producto */
for(j=0,m=0;j<jCol;j++,m++) /* mat1 avanza en columna y mat2 avanza en fila */
{
num+=mat1[i][j]*mat2[m][n]; /* suma de la multiplicacion fila*columna */
}
auxMat[s][p++]=num; /* guardo el producto en auxMat */
num=0; /* seteo num para el prox producto */
n++; /* mat2 cambia de columna */
if(n==nCol) /* salto de fila en mat1 y auxMat*/
{
i++; /* mat1 cambia de columna */
/* seteo los indices */
n=0;
p=0;
s=1;
}
cant++;
} /* fin del while */
return auxMat;
} /* fin del if */
else
return NULL;
}
int esProducto(int j,int m)
{
return j==m;
}
Te sigo ayudando mañana, Saludos