Ing. Electronica


MATRICEZ
Matrices en C++. Uso, declaración, y sintaxis de las matrices en C++
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).
¿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:
​
​
​
​
​
​
Declaración de una matriz en C++
​
​
​
​
​
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.
¡Bien! Ya sabemos cómo declarar una matriz en C++, sin embargo, aún no sabemos cómo acceder a los datos que estas contienen. Veámoslo:
​
​
​
​
​
​
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).
​
​
​
​
​
​
​
​
Recorrer una matriz en C++
Para obtener todos los datos que se encuentran al interior de una matriz, debemos acceder a cada posición y esto se hace fácilmente con dos ciclos for (anidados). La lógica de este procedimiento es la siguiente, el primer ciclo for comenzará desde cero e ira hasta el número de filas, de modo que la variable de control que generalmente llamamos "i", será la que va a ir variando entre cero y el tamaño del array, de esta forma al poner la i al interior de los corchetes, estaremos accediendo al valor de cada fila y el segundo ciclo irá de cero al número de columnas y normalmente se usa la variable llamada j para acceder a cada columna, veamos:
Nota: En el siguiente código uso una forma sencilla y rápida de obtener la cantidad o número de filas de una matriz y también cómo obtener el número o cantidad de columnas de una matriz. Ten en cuenta que esto es importante, pues a veces no tenemos la certeza del tamaño de la matriz.
​
​
​
​





#include<iostream>
#include<math.h>
using namespace std;
int A[10][10],B[10][10],C[10][10],i,j,k,n,w,t,m,suma,Vo,R[10][10];
float Leer(),multi(),formul(),formul2(),Escrit();
int main(){
int opcion;
do{
cout<<"*********Prueba 11: Matrices*********\n";
cout<<"1)Lectura\n";
cout<<"2)Multiplicacion de Matrices\n";
cout<<"3)Formula 1\n";
cout<<"4)Formula 2\n";
cout<<"5)Escritura\n";
cout<<endl;
cin>>opcion;
if(opcion>0,opcion<5){
switch (opcion){
case 1:{
Leer();
break;
}
case 2:{
multi();
break;
}
case 3:{
formul();
break;
}
case 4:
{
formul2();
break;
}
case 5:{
Escrit();
break;
}
}
}else
cout<<"Opcion no existente\n";
cout<<endl;
cout<<endl;
}while (opcion!=0);
return(0);
}
float Leer(){
cout<<endl;
cout<<"*******Leer Matriz*******\n";
cout<<endl;
cout<<"N° de Filas:";cin>>m;
cout<<"N° de Columnas:";cin>>n;
cout<<endl;
cout<<endl;
cout<<"Matriz[A]\n";
for (i=1;i<=n;i++){
for (j=1;j<=m;j++){
cout<<"Matrix["<<i<<"]["<<j<<"]= ";
cin>>A[i][j];
}
}
cout<<endl;
cout<<"Matriz[B]\n";
for (i=1;i<=n;i++){
for (j=1;j<=m;j++){
cout<<"Matrix["<<i<<"]["<<j<<"]= ";
cin>>B[i][j];
}
}
}
float multi(){
cout<<"*******Multiplicacion entre A[][]*B[][]*******\n";
cout<<endl;
cout<<"N° de Filas:";cin>>m;
cout<<"N° de Columnas:";cin>>n;
cout<<endl;
cout<<endl;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
C[i][j]=0;
for(k=1;k<=m;k++){
C[i][j]=C[i][j]+(A[k][j]*B[k][j]);
cout<<"C["<<i<<"]["<<j<<"]= ";
cout<<C[i][j];
cout<<endl;
}
}
}
}
float formul(){
cout<<"*******Voltaje en onda*******\n";
cout<<endl;
cout<<"N° de Filas:";cin>>m;
cout<<"N° de Columnas:";cin>>n;
cout<<endl;
cout<<endl;
Vo=100;
for(w=5;w<=15;w=w+0.25){
for(t=0.1;t<=2;t=t+0.1){
R[i][j]=Vo*cos(w*t);
cout<<"R["<<i<<"]["<<j<<"]= ";cout<<R[i][j];
cout<<endl;
i++;
j++;
}
}cout<<endl;
}
float formul2(){
cout<<"*******ECUACION SEGUNDO GRADO*******\n";
cout<<endl;
cin>>m; cin>>n;
for(i = 1; i <=n; i++){
for(j = 1; j <= m; j++){
(B[i][j]) = (A[i][j])* pow(A[i][j], 2) * 15 + (C[i][j]);
cout<<(B[i][j])<<endl;
}
} cout<<endl;
}
float Escrit(){
cout<<endl;
cout<<"*******Lectura de la Matriz Formula*******\n";
cout<<endl;
cout<<"N° de Filas:";cin>>m;
cout<<"N° de Columnas:";cin>>n;
cout<<endl;
cout<<endl;
cout<<"Matriz Formula\n";
for (i=1;i<=n;i++){
for (j=1;j<=m;j++){
cout<<"R["<<i<<"]["<<j<<"]= ";cout<<R[i][j];
cout<<R[i][j];
cout<<endl;
}
}
}