jueves, 2 de junio de 2011

MULTIPLICACION DE MATRIZ

  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 ] ; // EN ESTA LINEA DECLARAMOS LA MATRIZ 1 E    INCREMENTA LAS COLUMNAS Y FILAS//   int [ , ] Matriz2 = new int [ f2 + 1 , c2 + 1 ] ; //EN ESTA LINEA DECLARAMOS LA MATRIZ 2 E    INCREMENTA LAS COLUMNAS Y FILAS//   int [ , ] Multiplicacion = new int [ f1 + 1 , c2 + 1 ] ;//SE DECLARA LA VARIABLE MULTIPLICACION Y SE INCREMENTA LAS COLUMNAS Y FILAS//
   if ( c1 == f2 ) {//ESTE IF PERMITE QUE LA MATRIZ SE MULTIPLEQUE SI LAS COLUMNAS DE LA MATRIZ 1 SEAN IGUALES A LAS FILAS DE LA MATRIZ 2//
 Console. WriteLine ( " \n Datos [Matriz 1]: " ) ;  
  for ( int i = 1 ; i <= f1 ; i ++ ) { //SE USAN DOS FOR ANIDADOS PARA PODER LLENAR LA MATRIZ Y FUNCIONARA CUANDO J SEA MENOR O IGUAL A C1 QUE ES EL 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 ;//AQUI SE VA ALMACENAR EL RESULTADO DE LA MULTIPLICACION DE LA MATRIZ//
      for ( int z = 1 ; z <= c1 ; z ++ ) {
       Multiplicacion [ i, j ] = Matriz1 [ i, z ] * Matriz2 [ z, j ] + Multiplicacion [ i, j ] ; //AQUI REALIZAMOS LA MULTIPLICACION 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 ) ; //EN ESTE ELSE MUESTRA EL MENSAJE DE ERROR CUANDO NO SE CUMPLE EL IF QUE DICE QUE LAS COLUMNAS DE LA MATRIZ 1 TIENEN QUE SER IGUALES A LAS FILAS DE LA MATRIZ 2//
   }
   Console. Read ( ) ;
  } } }
ANGEL ESPAÑA