domingo, 27 de febrero de 2011

Multiplicacion de Matrices


En la imagen se muestra como se debe de realilzar una multiplicacion de matrices: y a continuacion mostrare el codigo para realizar la multiplicacion en  C#




Este es el codigo para reliza una multiplicacion de matrices en C#


using System ;
using System.Collections.Generic ;
using System. Text ;
namespace MultiplicacionMatrices {
 class MultiplicacionMatrices {
  static void Main ( ) {
   Console. WriteLine ( "[Matriz 1]" ) ;
   Console. Write ( "Filas: " ) ;
   int f1 = int . Parse ( Console. ReadLine ( ) ) ;
   Console. Write ( "Columnas: " ) ;
   int c1 = int . Parse ( Console. ReadLine ( ) ) ;
   Console. WriteLine ( " \n [Matriz 2]" ) ;
   Console. Write ( "Filas: " ) ;
   int f2 = int . Parse ( Console. ReadLine ( ) ) ;
   Console. Write ( "Columnas: " ) ;
   int c2 = int . Parse ( Console. ReadLine ( ) ) ;
   int [ , ] Matriz1 = new int [ f1 + 1 , c1 + 1 ] ; // aqui se esta declarando la matriz
   int [ , ] Matriz2 = new int [ f2 + 1 , c2 + 1 ] ;
   int [ , ] Multiplicacion = new int [ f1 + 1 , c2 + 1 ] ;
   if ( c1 == f2 ) {
 Console. WriteLine ( " \n Datos [Matriz 1]: " ) ;      /* una matriz se puede multiplicar siempre y cuando las columnas de la M1 sean iguales a las filas de la M2 este "if"  permite que el usuario no ingrese una matriz no multiplicable osea que no tenga las caracteristicas antes mencionadas*/
    for ( int i = 1 ; i <= f1 ; i ++ ) { /* para llenar una matriz se nececitan dos "for anidados" en los cuales el for del interior funcionara mas rapido que el for exterior el for interno nos dice que este va a funcionar siempre que j sea menor o igual a c1 osea al numero de columnas de la matriz 1 */
     for ( int j = 1 ; j <= c1 ; j ++ ) {
      Console. Write ( "Ingresa Dato (Fila: {0} - Columna: {1}): " , i, j ) ;
      Matriz1 [ i, j ] = int . Parse ( Console. ReadLine ( ) ) ; } }
    Console. WriteLine ( "Datos [Matriz 2]: " ) ;
    for ( int i = 1 ; i <= f2 ; i ++ ) {
     for ( int j = 1 ; j <= c2 ; j ++ ) {
      Console. Write ( "Ingresa Dato (Fila: {0} - Columna: {1}): " , i, j ) ;
      Matriz2 [ i, j ] = int . Parse ( Console. ReadLine ( ) ) ;
     } }
    for ( int i = 1 ; i <= f1 ; i ++ ) {
     for ( int j = 1 ; j <= c2 ; j ++ ) {
      Multiplicacion [ i, j ] = 0 ;
      for ( int z = 1 ; z <= c1 ; z ++ ) {
       Multiplicacion [ i, j ] = Matriz1 [ i, z ] * Matriz2 [ z, j ] + Multiplicacion [ i, j ] ;  /* este proceso realiza la multiplicasion de las matrices */
      } } }
    Console. WriteLine ( "Multiplicacion de 2 Matrices" ) ;
    for ( int i = 1 ; i <= f1 ; i ++ ) {
     for ( int j = 1 ; j <= c2 ; j ++ ) {
      Console. Write ( "{0} " , Multiplicacion [ i, j ] ) ;
     }
     Console. WriteLine ( ) ;
    } } else { Console. WriteLine ( "Error: No se puede multiplicar las matrices" + " Columnas: {0}! = Filas: {1}" , c1, f2 ) ; /* este else es el complemento de el if mencionado anteriormente, se evalua la condicion y en caso de resultar falsa muestra el mensaje de error*/
   }
   Console. Read ( ) ;
  } } }



En esta imagen se muestra el programa ya ejecutado