top of page
Multiplicacion-de-matrices-3x3-1.webp

Clase 14: Matrices

A raíz de cierto problema ocurrido en la universidad, esta clase tuvo que desarrollarse de manera virtual, siendo además la última sesión del curso.

​

El tema abordado fueron las matrices las cuales presentan grandes paralelismos con los vectores (Tema de la semana pasada). Los vectores son arreglos unidimensionales, mientras que las matrices son arreglos multidimensionales por lo que en su estructura son bastantes similares. Dicho esto, una matriz no es más que una serie de vectores contenidos uno en el otro. En otras palabras, una matriz es un vector cuyas posiciones son otros vectores y es esto precisamente lo que le da la característica de ser multidimensional. Además, sus inicialización o definición son similares.

​

Para esta sesión, se incluirá un apartado de síntesis conceptual y se presentarán las codificaciones hechas para la clase.  

Lunes 04/03/2024

Síntesis conceptual

DEFINICIONES DE MATRIZ

  • Una matriz es un vector de vectores. También es llamado un array bidimensional o multidimensional.

  • Una matriz es una secuencia de objetos del mismo tipo que ocupan un área contigua de memoria, y que podemos acceder a ella a partir de índices.

  • Una matriz es una estructura conformada por filas y columnas. Idealmente esta formada por más de dos filas y columnas. Si una matriz tiene una única fila o una única columna, entonces estamos hablando de un vector y no una matriz como tal.

 

DEFINICIÓN DE UNA MATRIZ EN DEV C++

La manera de declarar una matriz es similar a la de un vector:

​

Tipo nombre [#filas][#columnas];

 

EJEMPLOS DE DEFINICIÓN DE UNA MATRIZ

  • int NUMEROS [2][3];

  • char LETRAS [3][2];

  • int SUMA [i][j];  

 

ESQUEMATIZACIÓN DE UNA MATRIZ    

La intersección de una fila y una columna de la matriz son las casillas y cada una de ellas posee información o los datos de nuestro arreglo. 

De la matriz: int A [i][j];

​

​

​

​

​

​

INIALIZACIÓN DE UNA MATRIZ Y REPRESENTACIÓN                       

  • Inicialización general de una matriz: Es la definición de una matriz. En este caso, la matriz deberá ser rellenada.

       Por ejemplo: int NUMEROS [2][3];

 

  • Inicialización expresando explícitamente sus elementos: Se muestra los elementos de las filas y columnas explícitamente. Estos están contenidos por llaves y separadas por comas.

      Por ejemplo: int NUMEROS [2][3] = {1,2,3 , 4,5,6}

 

Asimismo, este tipo de inicialización puede pulirse diferenciando las filas de columnas:

Por ejemplo: int NUMEROS [2][3] = {{1,2,3} , {4,5,6}}

​

OBTENER EL VALOR DE UNA CASILLA ESPECÍFICA

Para acceder a los datos de las casillas, se harán uso de los índices de la matriz. Es a partir de estos de donde podremos llamar a un dato mediante la intersección de la fila y la columna, estos son los índices precisamente.

Por ejemplo: int NUMEROS [2][3] = {{1,2,3} , {4,5,6}}

​

​

​

​

  • cout<<NUMEROS [2][3];  ------->//6

  • cout<<NUMEROS [1][2];  ------->//2

Como se puede observar, los datos de la matriz se llaman a través de los índices. La intersección de estos es una casilla que contiene el dato de interés.

​

​

​

​

​

​

image.png
image.png
image.png

Menú hecho en clase

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

int n; 
int opcion; 

void ASIGNAR(); 
int i, j, M[3][3]; 

void MOSTRAR_M (); 

void PROMEDIO_M ();
int SUMA;
float PROM; 

void SUMA_M (); 
int A[5][5], B[5][5], C[5][5]; 

int main (){
   
   do{
       cout<<"\n"; 
       cout<<"               MENU" << endl; 
       cout<<"[1] ASIGNAR DATOS A UNA MATRIZ."<< endl; 
       cout<<"[2] MOSTRAR DATOS DE UNA MATRIZ"<< endl; 
       cout<<"[3] PROMEDIO DE LOS ELEMENTOS DE LA MATRIZ."<< endl;     
       cout<<"[4] SUMA DE MATRICES."<< endl; 
       cout<<"."<< endl;     
       cout<<"."<< endl;     
       cout<<"Ingrese una opcion <0>------->"; cin>>opcion; 
   
   
   switch (opcion){
       
       case 1:{
           cout<<"\n";
           cout<<"[1] ASIGNAR DATOS A UNA MATRIZ."<< endl; 
           cout<<"-------------------------------------"<< endl;
           
           ASIGNAR (); 
           
           break;
       }
       
       
       case 2: {
           cout<<"\n";
           cout<<"[2] MOSTRAR DATOS DE UNA MATRIZ"<< endl; 
           cout<<"-------------------------------------"<< endl;
           
           MOSTRAR_M ();
           
           break;
       }
       
       
       case 3:{
           cout<<"\n";
           cout<<"[3] PROMEDIO DE LOS ELEMENTOS DE LA MATRIZ."<< endl;
           cout<<"-------------------------------------"<< endl;
           
           PROMEDIO_M ();
           
           break;
       }
       
       
       case 4:{
           cout<<"\n";
           cout<<"[4] SUMA DE MATRICES."<< endl; 
           cout<<"-------------------------------------"<< endl;
           
           SUMA_M (); 
           
           break;
       }
       
       
   }
       cout<<"\n"; 
       cout<<"Si desea salir ingrese el número 0------>", cin>> n; 
   } while (n!=0);
   
   return 0; 
}


void ASIGNAR(){
   cout<<"\n"; 
   cout<<"Ingrese los elementos de la matriz M[3][3]:"<< endl;
   
   for (i=1; i<=3; i++)
       for (j=1; j<=3; j++){
           cout<<"M["<<i<<"]["<<j<<"]="; cin>>M[i][j]; 
       }
}


void MOSTRAR_M (){
   
   for (i=1; i<=3; i++)
       for (j=1; j<=3; j++){
           cout<<"M["<<i<<"]["<<j<<"]="<<M[i][j]<< endl; 
       }
}


void PROMEDIO_M (){
   
   SUMA=0; 
   
   for (i=1; i<=3; i++)
       for (j=1; j<=3; j++){
           SUMA=SUMA+M[i][j]; 
       }
   PROM=SUMA/9; 
   
   cout<<"El promedio de los datos de la matriz es "<< PROM<< endl; 
   
}

 

void SUMA_M (){
   cout<<"\n"; 
   cout<<"ELEMENTOS DE LAS MATRICEZ:"<< endl;
   cout<<"-------------------------------------"<< endl;
   cout<<"\n"; 
   
   for (i=1; i<=5; i++)
       for (j=1; j<=5; j++){
           A[i][j]=rand ()%30;  
           B[i][j]=rand ()%30; 
       }
   
   cout<<"ELEMENTOS DE A[5][5]"<< endl; 
   
   for (i=1; i<=5; i++)
       for (j=1; j<=5; j++){
          cout<<"A["<<i<<"]["<<j<<"]="<<A[i][j]<< endl; 
       }
   
   cout<<"\n";     
   cout<<"ELEMENTOS DE B[5][5]"<< endl; 
   
   for (i=1; i<=5; i++)
       for (j=1; j<=5; j++){
          cout<<"B["<<i<<"]["<<j<<"]="<<B[i][j]<< endl; 
       }
   
   //SUMA 
   
   for (i=1; i<=5; i++)
       for (j=1; j<=5; j++){
          C[i][j]=A[i][j]+B[i][j]; 
       }
   
   cout<<"\n"; 
   cout<<"Los elementos de la suma de matrices C[5][5]:"<< endl; 
   for (i=1; i<=5; i++)
       for (j=1; j<=5; j++){
          cout<<"C["<<i<<"]["<<j<<"]="<<C[i][j]<< endl; 
       }
   
   
}

MENU DE TAREA

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

COORD coord={0,0}; 
void gotoxy(int x, int y){
   coord.X=x;
   coord.Y=y; 
   SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
   }

int opcion; 
int n, i, j, k,a; 

void PRODUCTO (); 
int A[5][5], B[5][5], C[5][5]; 

void IDENTIDAD (); 

void SUMA ();
int D[10][10], E[10][10], SU[10][10], RE[10][10]; 

 

int main (){
   
   do{
       cout<<"\n"; 
       cout<<"MENU"<< endl;
       cout<<"[1] DEFINICIÓN DE MATRIZ IDENTIDAD."<< endl; 
       cout<<"[2] MULTIPLICACION DE MATRICES."<< endl; 
       cout<<"[3] SUMA Y RESTA DE MATRICES."<< endl; 
       cout<<"\n"; 
       cout<<"Ingrese una opcion <0>------->"; cin>>opcion; 
       
       switch (opcion){
           
           case 1: {
               cout<<"\n"; 
               cout<<"[1] DEFINICION DE MATRIZ IDENTIDAD."<< endl; 
               cout<<"-------------------------------------"<< endl; 
               
               IDENTIDAD (); 
               
               break;
           }
           
           case 2: {
               cout<<"\n"; 
               cout<<"[2] MULTIPLICACION DE MATRICES."<< endl; 
               cout<<"-------------------------------------"<< endl; 
               
               PRODUCTO (); 
               
               break;
           }
           
           
           case 3: {
               cout<<"\n"; 
               cout<<"[3] SUMA Y RESTA DE MATRICES."<< endl; 
               cout<<"-------------------------------------"<< endl; 
               
               SUMA(); 
               
               break;
           }
       
       }
       
   }while (opcion!=0); 
   
   return 0; 
}

 

void IDENTIDAD (){
   
   cout<<"Introduzca el numero de filas y columnas---->"; cin>>n; 
   
   int I[n][n];
   
   for (i=1; i<=n; i++)
       for (j=1; j<=n; j++){
           
           I[i][j]=0;
           
           if (i==j)
               I[i][j]=1;
           
       }
   
   for (i=1; i<=n; i++)
       for (j=1; j<=n; j++){
           
           gotoxy(j*5, i+10);
    
           cout<<I[i][j];
       
       }
   

}

void PRODUCTO (){
   cout<<"\n"; 
   cout<<"ELEMENTOS DE LAS MATRICEZ:"<< endl;
   cout<<"-------------------------------------"<< endl;
   cout<<"\n"; 
   
   for (i=1; i<=5; i++)
       for (j=1; j<=5; j++){
           A[i][j]=rand ()%30;  
           B[i][j]=rand ()%30; 
       }
   
   cout<<"ELEMENTOS DE A[5][5]"<< endl; 
   cout<<"----------------------------------------------------"<< endl; 
   cout<<"\n"; 
   for (i=1; i<=5; i++)
       for (j=1; j<=5; j++){
          cout<<"A["<<i<<"]["<<j<<"]="<<A[i][j]<< endl; 
       }
   
   cout<<"\n";     
   cout<<"ELEMENTOS DE B[5][5]"<< endl; 
   cout<<"----------------------------------------------------"<< endl; 
   cout<<"\n"; 
   for (i=1; i<=5; i++)
       for (j=1; j<=5; j++){
          cout<<"B["<<i<<"]["<<j<<"]="<<B[i][j]<< endl; 
       }
   
   
   //PRODUCTO DE MATRICES 
   
   for (i=1; i<=5; i++) {
        for (j=1; j<=5; j++) {
            C[i][j]= 0;
            for (k=0; k<=5; k++) {
            C[i][j] = A[i][k] * B[k][j];
        }
    }
}
   
   //RESULTADOS 
   
   cout<<"\n"; 
   cout<<"Los elementos del producto de matrices C[5][5]:"<< endl;
   cout<<"----------------------------------------------------"<< endl; 
   cout<<"\n"; 
   for (i=1; i<=5; i++)
       for (j=1; j<=5; j++){
          cout<<"C["<<i<<"]["<<j<<"]="<<C[i][j]<< endl; 
       }
   
   
}

void SUMA (){
   
   cout<<"\n"; 
   cout<<"ELEMENTOS DE LAS MATRICEZ:"<< endl;
   cout<<"-------------------------------------"<< endl;
   cout<<"\n"; 
   
   for (i=1; i<=10; i++)
       for (j=1; j<=10; j++){
           D[i][j]=rand ()%50;  
           E[i][j]=rand ()%50; 
       }
   
   cout<<"ELEMENTOS DE D[10][10]"<< endl; 
   
   for (i=1; i<=10; i++)
       for (j=1; j<=10; j++){
          cout<<"D["<<i<<"]["<<j<<"]="<<D[i][j]<< endl; 
       }
   
   cout<<"\n";     
   cout<<"ELEMENTOS DE E[10][10]"<< endl; 
   
   for (i=1; i<=10; i++)
       for (j=1; j<=10; j++){
          cout<<"E["<<i<<"]["<<j<<"]="<<E[i][j]<< endl; 
       }
   
   // PARA LA SUMA 
   
   for (i=1; i<=10; i++)
       for (j=1; j<=10; j++){
          SU[i][j]=D[i][j]+E[i][j]; 
       }
   
   cout<<"\n"; 
   cout<<"Los elementos de la suma de matrices SU[10][10]:"<< endl; 
   for (i=1; i<=10; i++)
       for (j=1; j<=10; j++){
          cout<<"SU["<<i<<"]["<<j<<"]="<<SU[i][j]<< endl; 
       }
   
   // PARA LA RESTA
   
   for (i=1; i<=10; i++)
       for (j=1; j<=10; j++){
          RE[i][j]=D[i][j]-E[i][j]; 
       }
   
   cout<<"\n"; 
   cout<<"Los elementos de la resta de matrices RE[10][10]:"<< endl; 
   for (i=1; i<=10; i++)
       for (j=1; j<=10; j++){
          cout<<"RE["<<i<<"]["<<j<<"]="<<RE[i][j]<< endl; 
       }

}

image.png
bottom of page