
/**************************************************************************/
/*********** Programa para la Suma y Multiplicacion de Matrices ***********/
/**************************************************************************/

#include <stdio.h>

#define N 3

void IntroMatriz ( int X[N][N] )
{
   int i, j;

   for ( i = 0; i < N; i++ )
      for ( j = 0; j < N; j++ )
         scanf ( "%d", &X[i][j] );
}

void EscriMatriz ( int X[N][N] )
{
   int i, j;

   for ( i = 0; i < N; i++ )
   {
      for ( j = 0; j < N; j++ )
         printf ( "%d ", X[i][j] );
      printf ( "\n" );
   }
}

void MultiMatriz ( int X[N][N], int Y[N][N], int Z[N][N] )
{
   int i, j, k;

   for ( i = 0; i < N; i++ )
      for ( j = 0; j < N; j++ )
      {
         Z[i][j] = 0;
         for ( k = 0; k < N; k++ )
            Z[i][j] = Z[i][j] + X[i][k] * Y[k][j];
      }
}

void SumarMatriz ( int X[N][N], int Y[N][N], int Z[N][N] )
{
   int i, j;

   for ( i = 0; i < N; i++ )
      for ( j = 0; j < N; j++ )
         Z[i][j] = X[i][j] + Y[i][j];
}

void main ( void )
{
   char matrizIn = 0;
   char opcion;
   int A[N][N], B[N][N], R[N][N];

   do
   {
      printf ( "\n\n 1 - Introducir Matrices\n" );
      printf ( " 2 - Sumar Matrices\n" );
      printf ( " 3 - Multiplicar Matrices\n" );
      printf ( " 4 - Salir\n" );
      printf ( "       Introduce Opcion:" );

      do
      {
         opcion = getchar ( );
      }while ( ( opcion < '1' ) || ( opcion > '4' ) );

      switch ( opcion )
      {
         case '1': printf ( "\nIntroduce Matriz A\n" );
                   IntroMatriz ( A );
                   printf ( "\nIntroduce Matriz B\n" );
                   IntroMatriz ( B );
                   matrizIn = 1;
                   break;
         case '2': if ( ! matrizIn )
                      printf ( "Introduzca primero las matrices" );
                   else
                   {
                      SumarMatriz ( A, B, R );
                      EscriMatriz ( R );
                   }
                   break;
         case '3': if ( ! matrizIn )
                      printf ( "Introduzca primero las matrices" );
                   else
                   {
                      MultiMatriz ( A, B, R );
                      EscriMatriz ( R );
                   }
                   break;
         case '4': printf ( " Fin del programa\n" );
      }
   }while ( opcion != '4' );
}
