¿Por qué no funciona bien este programa en C?
El programa trata de introducir dos matrices de orden elegido por el usuario así como sus números, y multiplicar la primera por la segunda, el problema se encuentra en la función multiplicación (int multi), pero no se ni donde ni porque solo que no realiza la operación correctamente.
(Se que probablemente no hagan falta tantas variables es solo para saber cual va con cual)
Espero que el código se entienda.
#include<stdio.h>
int m, n, q, w, i, j, t,c,d,a,b,r,v ;
int intro(int X[100][100],int a,int b);
int multi(int A[100][100],int m, int n, int B[100][100],int q,int C[100][100]);
int imprime_mat(int X[100][100],int a,int b);
main()
{
printf( introduzca las dimensiones de la primera matriz =>\n );
printf( filas:\n );
scanf( %d ,&m);
printf( columnas:\n );
scanf( %d ,&n);
printf( introduzca las dimensiones de la segunda matriz=>\n );
printf( filas:\n );
scanf( %d ,&w);
printf( columnas:\n );
scanf( %d ,&q);
int A[100][100], B[100][100], C[100][100];
if(n==w)
{
printf( introduzca la primera matriz =>\n );
intro (A, m, n);
imprime_mat (A,m,n);
printf( introduzca la segunda matriz =>\n );
intro(B,w,q);
imprime_mat(B,w,q);
multi( A, m, n, B, q ,C);
imprime_mat(C,m,q);
system( pause );
}
else
{
printf( Para multiplicar matrices el numero de columnas de la primera );
printf( ha de ser igual al numero de filas de la segunda\n );
system( pause );}
}
int intro(int X[100][100],int a,int b)
{
for (c=0;c<a;c++)
{ for(d=0;d<b;d++)
{
printf( introduzca el elemento %d,%d de la matriz\n , c+1,d+1);
scanf( %d ,&X[c][d]);
}
}
system( pause );}
int multi(int A[100][100],int m,int n, int B[100][100], int q, int C[100][100])
{t=0;
j=0;
i=0;
for(t=0;t<m;t++)
{
for(j=0;j<q;j++)
{ for(i=0;i<n;i++)
{C[t][j]+=A[t]*B[j];
return C[t][j]; }
}
}
}
int imprime_mat(int X[100][100],int a,int b)
{printf( la matriz dada es:\n );
for ( v = 0 ; v < a ; v++ ){
for ( r = 0 ; r < b ; r++ ) {
printf ( %d , X [ v ] [r ] ) ;
}
printf ( \n ) ; // Imprime una linea en blanco cada vez
// que se termina de impri mir una fila .
}
printf( la matriz es de orden %dx%d\n ,a,b);}