Multiplicar matrices en C++ proyecto completo

Programacion

26.05.2012 a las 18:48 hs 0 538 0

Hola a todos los Pirateros, para aquellos que necesiten multiplicar matrices con C++ les traigo este código, solo deben cambiarle los créditos, es decir, quitar mi nombre y poner el de ustedes. Este código aunque no es completamente mio, las modificaciones si lo son. El código en Dev C++ no muestra ningún error, ni siquiera una advertencia...

#include <iostream>
#include <cstdlib>
#include <conio.h>
#include <ctype.h>
using namespace std;

int operacion(int [][100], int [][100], int [][100], int , int, int, int);
int salida();
int opcion;


int main()
{
int f,c,r,f1,f2,c1,c2, m1[100][100], m2[100][100], mr[100][100];
char f11;

f1=0; c1=0; f2=0; c2=0;

while ((f1<1) || (f1>101))
{ cout<<"Ingrese el numero de filas de la matriz 1 (maximo 100 filas): ";
// getch();
cin>>f1;
}
f1--; //Disminuyo en 1 el dato capturado porque el programa me cuenta el 0

while ((c1<1) || (c1>101))
{ cout<<"Ingrese el numero de columnas de la matriz 1 (maximo 100 columnas): "; cin>>c1; }
c1--;

while ((f2<1) || (f2>101))
{ cout<<endl<<"Ingrese el numero de filas de la matriz 2 (maximo 100 filas): "; cin>>f2; }
f2--;

while ((c2<1) || (c2>101))
{ cout<<"Ingrese el numero de columnas de la matriz 2 (maximo 100 columnas): "; cin>>c2; }
c2--;

r=operacion(m1,m2,mr,f1,f2,c1,c2);
if (r==-1)
{
cout<<endl<<"No se pudo realizar la operacion, la dimension de las matrices no es apropiada"<<endl;
}

else
{
cout<<endl<<"Digite por filas los datos de la matriz 1"<<endl<<endl;

for (f=0; f<=f1; f++)
{
for (c=0; c<=c1; c++)
{ cout<<"m1["<<f<<"]["<<c<<"] = "; cin>>m1[f][c]; }
}

cout<<endl<<"Digite por filas los datos de la matriz 2"<<endl<<endl;
for (f=0; f<=f2; f++)
{
for (c=0; c<=c2; c++)
{ cout<<"m2["<<f<<"]["<<c<<"] = "; cin>>m2[f][c]; }
}

r=operacion(m1,m2,mr,f1,f2,c1,c2); //Ejecuto la funcion que hace la operación de multiplicacion
{
cout<<endl<<"El resultado de la multiplicacion de las matrices es:"<<endl<<endl;

cout<<endl;
for (f=0; f<=f1; f++)
{
for (c=0; c<=c2; c++)
cout<<" "<<mr[f][c]<<" "; //Muestro la matriz resultante en la pantalla
cout<<endl;
}
}

}

cout<<endl<<"Escoja una opcion, si la opcion no esta disponible el programa finalizara"<<endl<<endl;

cout<<"1) Volver a calcular una matriz";
cout<<"2) Salir"<<endl;
cin>>opcion;
cout<<" "<<endl;

switch(opcion) //Verifica el valor de opcion
{
case 1: //Si es uno
system("cls"; //limpio la pantalla
main(); //Ejecuto nuevamente la función para calcular matrices
break;

case 2: //Si es dos
salida();
break; //El break sirve para que no ejecute las otras opciones.

default: //Si es una opcion no disponible
cout<<" ";
salida(); //Ejecuto esta función para salir
}

}

int salida()
{

cout<<endl<<"Trabajo realizado por:"<<endl;
cout<<" Ing Johann Leonardo Latorre Jaimes"<<endl; // Aquí deben colocar el nombre de ustedes...
cout<<endl<<"Programa finalizado..."<<endl;
system("PAUSE";
}

int operacion(int m1[][100], int m2[][100], int mr[][100], int f1, int f2,int c1, int c2)
{
int f,c,cc;
if (c1==f2) //si si se pueden sumar/restar
{
for (cc=0; cc<=c2; cc++) //recorremos las columnas de B
{
for (f=0; f<=f1; f++)
{
for (c=0; c<=c1; c++)
{ mr[f][cc]+=m1[f][c]*m2[c][cc]; }
}
}
return 1;
}
else
{return -1;}
}


interblink

Posteado por:

interblink

Administrador

0 Comentarios


Cargando comentarios espera un momento...
No tienes permisos para comentar.
Para comentar necesitas estar Registrado. O.. ya tienes usuario? Logueate!