Producto de matrices

Fernando Barrera

/* Este programa calcula el producto de una matriz por otra dando la posibilidad de elegir entre A x B ó B x A. Las matrices no tienen por qué ser cuadradas. */

#include <iostream>
using namespace std;
#define DIM 100

int main()
{
int n, m, i, j, r, t, p, q, a, x, y;
float v[DIM][DIM];
float w[DIM][DIM];
float z[DIM][DIM]={0};

cout << "Producto de matrices." << endl << endl;
cout << "Filas de la matriz A: "; cin >> n;
cout << "Columnas de la matriz A: "; cin >> m;

cout << endl << "Introduce los valores de la matriz A: " << endl;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cin >> v[i][j];
}
}

cout << "La matriz A es: " << endl;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cout << v[i][j] << " ";
}
cout << endl;
}
cout << endl << "Elige la operacion que quieras realizar:" << endl;
cout << "1.- A x B" << endl;
cout << "2.- B x A" << endl;
cin >> a;

switch(a)
{
case 1:
do
{
cout << endl << "Recuerda que solo se podra realizar el produco 
                 si num filas B = num columnas A";
cout << endl << "Filas de la matriz B: "; cin >> p;
cout << "Columnas de la matriz B: "; cin >> q;
}while(p!=m);

cout << endl << "Introduce los valores de la matriz B: " << endl;

for(r=0;r<p;r++)
{
for(t=0;t<q;t++)
{
cin >> w[r][t];
}
}

cout << "La matriz B es: " << endl;
for(r=0;r<p;r++)
{
for(t=0;t<q;t++)
{
cout << w[r][t] << " ";
}
cout << endl;
}

cout << "El producto A x B de las matrices es: ";
for(i=0;i<n;i++)
{
for(j=0;j<q;j++)
{
for(r=0;r<p;r++)
{
z[i][j]=z[i][j]+v[i][r]*w[r][j];
}
cout << z[i][j] << " ";
z[i][j]=0;
}
cout << endl;
}
break;

case 2:
do
{
cout << endl << "Recuerda que solo se podra realizar el produco 
                 si num filas A = num columnas B";
cout << endl << "Filas de la matriz B: "; cin >> p;
cout << "Columnas de la matriz B: "; cin >> q;
}while(q!=n);

cout << endl << "Introduce los valores de la matriz B: " << endl;
for(r=0;r<p;r++)
{
for(t=0;t<q;t++)
{
cin >> w[r][t];
}
}
cout << "La matriz B es: " << endl;
for(r=0;r<p;r++)
{
for(t=0;t<q;t++)
{
cout << w[r][t] << " ";
}
cout << endl;
}

cout << "El producto B x A de las matrices es: ";
for(r=0;r<p;r++)
{
for(t=0;t<m;t++)
{
for(i=0;i<n;i++)
{
z[r][t]=z[r][t]+v[r][i]*v[i][t];
}
cout << z[r][t] << " ";
}
cout << endl;
}
break;
}

return 0;
}
Anuncios
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

2 respuestas a Producto de matrices

  1. Si se elige la segunda opción, no se imprime por pantalla el resultado del producto, y por más que lo repaso no consigo encontrar el error. Ya me dirá.

  2. Observa las correcciones ahora.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s