martes, 1 de diciembre de 2015

evalucacion 4

avaluacion 4

#include <iostream>
#include <math.h>
using namespace std;

const int n=2, m=2;
int i, j, SUMA, PROM, men , M;
int Matriz[n][m], T[n][m], A[n][m], B[n][m], C[n][m];   // DECLARACION
int LeerMatriz();
int SumaElementos();
int ImprimirElementos();
int MatrizIdentidad();
int MatrizTranspuesta();
int SumaMatrices();
int ElementosCentrales();
int Promedio(), MayMen();

int main( )
{
  int Opcion;
  do
  {
  cout<<"***** MENU ************* \n ";
  cout<<"1) LEER UNA MATRIZ   \n";
  cout<<" 2) SUMA DE ELEMENTOS  \n";
  cout<<" 3) IMPRIMIR LOS ELEMENTOS   \n";
  cout<<" 4) MATRIZ IDENTIDAD \n  ";  
  cout<<" 5) MATRIZ TRANSPUESTA \n";    
  cout<<" 6) SUMA DE MATRICES  \n";      
  cout<<" 7) ELEMENTOS CENTRALES MATRICES \n";        
  cout<<" 8) PROMEDIO DE ELEMENTOS DE LA MATRIZ  \n";        
  cout<<" 9) CONTAR LOS MAYORES Y MENORES DE ELEMENTOS DE LA MATRIZ \n \n";
  cout<<"10) DETERMINANTE"      
  cout<<" *********************** \n\n";
  cout<<"       Ingrese una Opcion: "; cin>> Opcion;
 // swhitch
 switch (Opcion)
  { //Inicio Switch
    case 1:
     {
      LeerMatriz();    
     }  
     break;
    case 2:
     {
      SumaElementos();
     }  
     break;
   
   case 3:
     {
      ImprimirElementos();    
     }  
     break;

   case 4:
     {
      MatrizIdentidad();     // INVOCACION
     }  
     break;
   case 5:
     {
      MatrizTranspuesta();   // INVOCACION
     }break;
   case 6:
     {
      SumaMatrices();   // INVOCACION
     }break;
   case 7:
     {
      ElementosCentrales();   // INVOCACION
     }break;
   case 8:
     {
      Promedio();   // INVOCACION
     }break;
    case 9:
     {
      MayMen();   // INVOCACION
     }break;
      case 10:
     {
      Promedio();   // INVOCACION
     }break;
         
  } // Fin Switch
}while(Opcion !=0); // FIN DEL WHILE

 cout<<endl;
 system ("pause");
 return 0;
} // FIN DEL PROGRAMA

// DESARROLLO DE LAS FUNCIONES
int LeerMatriz()
{
 cout<<"***** LEER UNA MATRIZ **** \n";  
 cout<<"Llenar datos a la matriz \n\n";
 for (i=1; i<=n; i++)
  for (j=1; j<=m; j++)    
   {
    cout<<"Matriz["<<i<<"]["<<j<<"] = "; cin>>Matriz[i][j];
   }
 cout<<"************************** \n\n";  
}

int SumaElementos()
{
 cout<<"***** SUMAR LOS ELEMENTOS DE UNA MATRIZ **** \n";  
 SUMA=0;
 for (i=1; i<=n; i++)
  for (j=1; j<=m; j++)    
   {
    SUMA = SUMA + Matriz[i][j];
   }
  cout<<"La suma de los elementos de la Matriz es: "<<SUMA<<endl;
  cout<<"************************** \n\n";  
}

int ImprimirElementos()
{
 cout<<"***** IMPRIMIR LOS ELEMENTOS DE LA MATRIZ **** \n";  
 for (i=1; i<=n; i++)
 for (j=1; j<=m; j++)    
  {
  cout<<"Matriz["<<i<<"]["<<j<<"] = "<<Matriz[i][j]<<endl;
  }
 cout<<"********************************************** \n\n";        
}

int MatrizIdentidad()
{
 cout<<"***** CONVIERTE A UNA MATRIZ IDENTIDAD **** \n";  
 for (i=1; i<=n; i++)
 for (j=1; j<=m; j++)    
  {
    if(i!=j)
     Matriz[i][j] = Matriz[i][j] * 0;
    if (i==j)
     Matriz[i][j] = Matriz[i][j] / Matriz[i][j];
  }
 cout<<"********************************************** \n\n";        
}

int MatrizTranspuesta()
{
 cout<<"***** CONVIERTE A UNA MATRIZ IDENTIDAD **** \n";  
 for (i=1; i<=n; i++)
 for (j=1; j<=m; j++)    
  {
    if(i!=j)
     T[i][j] = Matriz[j][i];
  }
  // IMPRESION DE LOS ELEMENTOS DE LA MATRIZ
 for (i=1; i<=n; i++)
 for (j=1; j<=m; j++)    
  {
  cout<<"T["<<i<<"]["<<j<<"] = "<< T[i][j]<<endl;
  }
 cout<<"********************************************** \n\n";        
}

int SumaMatrices()
{
 cout<<"***** SUMA DE MATRICES ******************** \n";  
 cout<<"Lectura de la Matriz A[n][m] \n ";
 for (i=1; i<=n; i++)
 for (j=1; j<=m; j++)    
  {
   cout<<"A["<<i<<"]["<<j<<"] = "; cin>>A[i][j];
  }
 cout<<"Lectura de la Matriz B[n][m] \n ";
 for (i=1; i<=n; i++)
 for (j=1; j<=m; j++)    
  {
   cout<<"B["<<i<<"]["<<j<<"] = "; cin>>B[i][j];
  }
  // PROCESO
 for (i=1; i<=n; i++)
 for (j=1; j<=m; j++)    
  {
   C[i][j] = A[i][j] + B[i][j];
  }
  // RESULTADO
  cout<<"LA SUMA DE LAS MATRICES A[n][m]+B[n][m] ES: \n\n";
 for (i=1; i<=n; i++)
 for (j=1; j<=m; j++)    
  {
  cout<<"C["<<i<<"]["<<j<<"] = "<< C[i][j]<<endl;
  }
 cout<<"********************************************** \n\n";        
}

int ElementosCentrales()
{
 cout<<"*********ELEMENTOS CENTRALES************************* \n\n";        

 for (i=1; i<=n; i++)
 for (j=1; j<=m; j++)    
  {
   if(i==j)
    cout<<"Matriz["<<i<<"]["<<j<<"] = "<< Matriz[i][j]<<endl;
  }
 cout<<"********************************************** \n\n";        

}

int Promedio()
{
 cout<<"********* PROMEDIO DE LOS ELEMENTOS ************************* \n\n";        
 SUMA=0;
 for (i=1; i<=n; i++)
 for (j=1; j<=m; j++)    
  {
   SUMA = SUMA + Matriz[i][j];
  }
  PROM = SUMA/(n*m);
  cout<<"El promedio de la Matriz es: "<<PROM <<endl;
 cout<<"************************************************************* \n\n";        
}

int MayMen()
{
 M=0;  
 men=0;
 for (i=1; i<=n; i++)
 for (j=1; j<=m; j++)    
  {
   if (Matriz[i][j]>PROM)
     M = M + 1;
   if (Matriz[i][j]<PROM)
     men = men + 1;
  }
 cout<<"Tiene "<< M << "Valores Mayores al promedio de"<< PROM <<endl;
 cout<<"Tiene "<< men << "Valores Menores al promedio de"<< PROM <<endl;
}

int determinante()
{
cout<<"********* determinante de una matriz ************** \n\n";
double det(double **m, int b)
{
   double determinante = 0, aux = 0;
   int c;
   if(b==2)
      return m[0][0]*m[1][1] - m[1][0]*m[0][1];
   else
   {
      for(int j=0; j < b; j++)
      {
         double **menor=(double **)malloc(sizeof(double)*(b-1));
         for(int h=0; h < (b-1); h++)
             menor[h] = (double *)malloc(sizeof(double)*(b-1));
         for(int k=1; k < b; k++)
         {
             c = 0;
             for(int l=0; l < b; l++)
             {
                 if(l!=j)
                 {
                     menor[k-1][c] = m[k][l];
                     c++;
                 }
             }
          }
          aux = pow(-1, 2+j)*m[0][j]*det(menor, b-1);
          determinante += aux;
          for(int q = 0; q < (b-1); q++)
               free(menor[q]);
          free(menor);
      }
      return determinante;
   }
}