FrankML
Bienvenido al laboratorio N° 11
Matriz
Matrices , Uso, declaración, y sintaxis de las matrices
Las matrices o como algunos las llaman "arreglos multidimensionales" son una estructura de datos bastante similar a los vectores o arreglos. De hecho, una matriz no es más que una serie de vectores contenidos uno en el otro (u otros), es decir, una matriz es un vector cuyas posiciones son otros vectores. Hablemos con más detalle de esto para quedar más claros.
Nota: Te recomiendo ver y comprender la sección de arrays o vectores, antes de iniciar con este artículo para poder dominar el tema de éste con más facilidad.
Primero, dejemos claro qué es una matriz. En términos generales, una matriz es una estructura conformada por filas y columnas, idealmente más de dos filas y columnas, de hecho, podemos decir que si una "matriz" tiene una única fila o una única columna, entonces estamos hablando de un vector y no una matriz como tal.
La intersección de una fila y una columna de la matriz son las casillas y cada una de ellas podrá poseer información, simple o compleja (ya dependerá de nuestras necesidades).
Ahora, tal como dije antes, un vector posee una única fila (o columna, como lo quieras ver) y de este modo un grupo de vectores unidos conforman una matriz, es por esto que al comienzo dije que una matriz es un vector conformado por otra serie de vectores.
Viéndolo desde el punto de vista de la programación, una matriz es un vector cuyas posiciones (de la cero a la n) son, cada una de ellas, otro vector
Como siempre, la mejor forma de comprender algo es viendo un ejemplo en acción, así que veamos un buen ejemplo de matrices en C++
Matrices en C++ un buen ejemplo
Muy bien voy a retomar el ejemplo de la sección anterior donde teníamos la necesidad de almacenar los títulos y los autores de una serie de libros dada.
Tal como mencioné en dicha sección, una solución alternativa al problema, además de correcta y adecuada; es crear una matriz que almacenará en la primera columna los títulos, y en la segunda columna los autores; cada fila será entonces la información completa de un libro.
Para solucionar este problema, aprendamos primero algunas normas básicas para poder crear y usar matrices en C++.
¿Cómo se crea una Matriz en C++?
Declarar una matriz en C++ es muy similar a la de un vector, se deben seguir las mismas normas para declarar una variable pero una vez más con un pequeño cambio en la sintaxis. Primero necesitaremos saber el tipo de los datos que irán al interior de este (números, decimales o cadenas de texto, etc.) necesitamos también, como siempre, un nombre para la matriz y un tamaño máximo tanto para las filas como para las columnas. La sintaxis para declarar una matriz en C++ es la siguiente:
Nota: Recuerda que en C++, no es posible crear de una manera sencilla un vector (y por ende una matriz)capaz de almacenar una cantidad de información indefinida, es necesario ingresar con antelación la cantidad de datos (filas y columnas) que la matriz tendrá.
Tenemos entonces, como podrás ver, que la sintaxis es casi la misma excepto que hemos añadido un par de corchetes "[]" más esta vez y al interior de éstos debemos poner el número de filas y columnas máximas de la matriz, respectivamente. Veamos un ejemplo en el cual pondré la declaración de varias matrices de diferentes tipos y tamaños en C++.
Declaración de una matriz en C++
Veamos rápidamente que representa cada línea del código anterior.
Línea 1
Esta línea contiene la declaración de una matriz llamada myMatriz1 que tendrá 10 filas y 5 columnas y cada una de las 50 casillas tendrá datos de tipo entero.
Línea 2
Esta línea contiene la declaración de una matriz llamada myMatriz2 que tendrá 5 filas y 10 columnas y cada una de las 50 casillas tendrá datos de tipo flotante.
Línea 3
Esta línea contiene la declaración de una matriz llamada myMatriz3 que tendrá 15 filas y 15 columnas (una matriz cuadrada) y cada una de las 225 casillas tendrá datos de tipo string.
Línea 4
Esta línea contiene la declaración de una matriz llamada myMatriz4 que tendrá 1000 filas (sí, leíste bien) y 3 columnas y cada una de las 3000 casillas (también leíste bien, tres mil casillas) tendrá datos de tipo booleano.
Ya que está claro cómo se declara una matriz, vamos a inicializarla, es decir darle un valor a cada casilla, según su tipo de dato.
¿Cómo inicializar una matriz en C++?
En cuanto tenemos declarado una matriz, es posible asignarle valores a cada una de sus casillas, evidentemente estos valores deben coincidir con el tipo de dato que le asignamos a dicha matriz
Voy a mostrar a continuación formas distintas de inicializar una matriz, todas son validas, ya es cuestión de nuestras necesidades y conocimientos determinar cuál es útil y en qué momento. Veamos entonces:
Forma 1 de declarar una matriz
Aquí hemos declarado una matriz de tipo int de dos filas y dos columnas y la hemos inicializado con diferentes valores. El valor inicial corresponde a la casilla 0,0 (fila cero, columna cero) y tiene el valor de 1, en la fila cero columna uno tenemos el valor de 2, en la fila uno columna cero el valor de 3 y finalmente en la fila uno columna uno el valor de 4. Es importante notar que el primer tanto la fila como la columna comienzan desde cero y no desde uno, por esto la primer casilla corresponde a la fila y columna cero.
Obtener el valor de una casilla específica
Para acceder al valor de una casilla nuevamente haremos uso de los corchetes, pero esta vez no para declarar tamaños (porque eso ya lo hicimos) sino para indicar posiciones (fila y columna).
Programación en c++
#include <iostream>
#include <math.h>
using namespace std;
//ZONA PUBLICA DE DECLARACIONES
int LECTURA();
int ESCRITURA();
int SUMA_MATRIZ();
int SUMA_COLUMNAS();
double PROM_FILAS();
int MULT_MATRIZ();
double IDENTIDAD();
double FORMULA();
int Seno,T,R,n,m,i,j,A[10][10],B[10][10],C[16][16],Vector, opcion;
double SUMA,PROMT,W,W0,V0;
int main()
{
cout<<" MENU "<<endl;
cout<<"******************************************"<<endl;
cout<<"1) LECTURA"<<endl;
cout<<"2) ESCRITURA"<<endl;
cout<<"3) SUMA MATRICES"<<endl;
cout<<"4) SUMA COLUMNAS"<<endl;
cout<<"5) PROMEDIO FILAS"<<endl;
cout<<"6) MULTIPLES MATRICES"<<endl;
cout<<"7) IDENTIDAD"<<endl;
cout<<"8) FORMULA"<<endl;
cout<<"Seleccione una opcion: "<<endl;
cin>>opcion;
cout<<endl;
switch(opcion)
{
case 1:
{
//EJERCICIO 1
cout<<"USTED ESCOGIO:"<<endl;
cout<<"*****OPERACION LECTURA*****"<<endl;
LECTURA();
};break;
case 2:
{
//EJERCICIO 2
cout<<"USTED ESCOGIO:"<<endl;
cout<<"******OPERACION ESCRITURA*******"<<endl;
ESCRITURA();
};break;
case 3:
{
//EJERCICIO 3
cout<<"USTED ESCOGIO:"<<endl;
cout<<"******OPERACION SUMA MATRICES*******"<<endl;
SUMA_MATRIZ();
};break;
case 4:
{
//EJERCICIO 4
cout<<"USTED ESCOGIO:"<<endl;
cout<<"******OPERACION SUMA COLUMNAS*******"<<endl;
SUMA_COLUMNAS();
};break;
case 5:
{
//EJERCICIO 5
cout<<"USTED ESCOGIO:"<<endl;
cout<<"******OPERACION PROMEDIO FILAS*******"<<endl;
PROM_FILAS();
};break;
case 6:
{
//EJERCICIO 6
cout<<"USTED ESCOGIO:"<<endl;
cout<<"******OPERACION MULTIPLICAR MATRIZ*******"<<endl;
MULT_MATRIZ();
};break;
case 7:
{
//EJERCICIO 7
cout<<"USTED ESCOGIO:"<<endl;
cout<<"******OPERACION IDENTIDAD*******"<<endl;
IDENTIDAD();
};break;
case 8:
{
//EJERCICIO 8
cout<<"USTED ESCOGIO:"<<endl;
cout<<"******FORMULA*******"<<endl;
FORMULA();
};break;
}
}
//FIN DEL PROGRAMA
// ZONA DE FUNCIONES
int LECTURA()
{
cout<<"Ingrese el Valor n:"; cin>>n;
cout<<"Ingrese el Valor m:"; cin>>m;
for (i=1;i<=n;i=i+1)
{
for(j=1;j<=m;j=j+1)
{
cin>>A[i][j];
}
i=1;j=1;
}
do
{
do
{
cin>>B[i][j];
j=j+1;
}
while (j<=m);
}
i=i+1;
while(i<=n)
}
int ESCRITURA()
{
cout<<"Ingrese el Valor n:"; cin>>n;
cout<<"Ingrese el Valor m:"; cin>>m;
for (i=1;i<=n;i=i+1)
{
for(j=1;j<=m;j=j+1)
{
cout<<"El Elemento del Vector A es:"<<A[i][j]<<endl;
}
i=1;j=1;
}
do
{
do
{
cout<<"El Elemento del Vector B es:"<<B[i][j]<<endl;
j=j+1;
}
while (j<=m);
}
i=i+1;
while(i<=n)
}
int SUMA_MATRIZ()
{
cout<<"Ingrese el Valor n:"; cin>>n;
cout<<"Ingrese el Valor m:"; cin>>m;
i=1;j=1;
while (i<=n)
{
while (j<=m)
{
C[i][j]=A[i][j]+B[i][j];
cout<<"El Elemento del Vector C es:"<<C[i][j]<<endl;
j=j+1
}
i=i+1;
}
cout<<"La Matriz C["<<i<<"]["<<j<<"]="<<C[i][j]<<endl;
}
int SUMA_COLUMNAS()
{
for(i=1;i<=n;i=i+1)
{
SUMA=0;
for(j=1;j<=m;j=j+1)
{
SUMA=SUMA+C[j][i];
if (j==3)
{
cout<<"La Suma de la Columnas Resulta:"<<SUMA<<endl;
}
else
{
cout<<"El valor de j no es equivalente a 3"<<endl;
}
}
}
}
double PROM_FILAS()
{
cout<<"Ingrese el Valor n:"; cin>>n;
cout<<"Ingrese el Valor m:"; cin>>m;
i=1;j=1;
while(i<=n)
{
SUMA=0;
while(j<=n)
{
SUMA=SUMA+C[i][j];
if (j==3)
{
PROM=SUMA/j;
cout<<"El Promedio es:"<<PROM<<endl;
}
else
{
cout<<"El valor de j no es equivalente a 3"<<endl;
}
j=j+1;
}
i=i+1;
}
}
int MULT_MATRIZ()
{
cout<<"Ingrese el Valor n:"; cin>>n;
cout<<"Ingrese el Valor m:"; cin>>m;
i=1;j=1;
while(i<=n)
{
while(j<=m)
{
C[i][j]=A[i][j]*B[i][j];
cout<<"El Producto de las Matrices A*B=C"<<C[i][j]<<endl;
}
j=j+1;
}
i=i+1;
}
double IDENTIDAD()
{
cout<<"Ingrese el Valor n:"; cin>>n;
cout<<"Ingrese el Valor m:"; cin>>m;
i=1;j=1;
for(i=1;i>3;i=i+1)
{
for(j=1;j<3;j=j+1)
{
if(i==j)
{
[i][j]=C[i][j]/C[i][j]
cout<<"La Identidad es:"<<[i][j]<<endl;
}
else
{
C[i][j]=0;
cout<<C[i][j]<<endl
}
}
}
}
double FORMULA()
{
i=1;j=1;V0=100;
for(W=5;W0<=10;W<=W+2)
{
for(T=2;T<5;T<=T+0.8)
{
Seno=sin(W+T);
R[i][j]=V0+Seno;
cout<<"El Resultado de la Formula es:"<<R[i][j]<<endl;
i=i+1;j=j+1;
}
}
}