

Matrices
(Arreglos Multidimensionales)
Es una estructura de datos estática y de un mismo tipo de datos, y de longitud fija que almacena datos de forma matricial. De igual forma que los arreglos unidimensionales, el almacenamiento de los datos en la memoria se realiza de forma secuencial y son accedidos mediante índices. Los arreglos multidimensionales son también conocidos como matrices. Por lo tanto se llama matriz de orden "m×n" a un conjunto rectangular de elementos dispuestos en filas "m" y en columnas "n", siendo m y n números naturales. Las matrices se denotan con letras mayúsculas: A, B, C, ... y los elementos de las mismas con letras minúsculas y subíndices que indican el lugar ocupado: a, b, c, ... Un elemento genérico que ocupe la fila i y la columna j se escribe i,j. Si el elemento genérico aparece entre paréntesis también representa a toda la matriz: A (i,j). Una matriz de orden 3x4 se muestra a continuación, siendo M una matriz de 3 filas y 4 columnas, la representación gráfica de sus posiciones sería la siguiente:
M 3x4 Filas = 3, columnas = 4

Matrices Cuadradas
Una matriz cuadrada es una matriz que tiene el mismo número de filas y columnas. La matriz que se muestra a continuación es de orden 3x3.

Declaración de arreglos multidimensionales
La sintaxis es la siguiente: tipo_dato identificador [dimensión1] [dimensión2] ... [dimensiónN] ; Donde N es un número natural positivo. Ejemplo Arreglo de dos dimensiones de orden 2x3. char m[2][3] ;

Declaración char m[2][3]; // forma una tabla de dos filas y tres columnas // cada fila es un arreglo de una dimensión// la declaración indica que hay dos arreglos de una dimensión
Nombre del grupo
m → indica la localización del grupo en la memoria
Nombre de las filas
m[0] → primera fila → indica
la localización de la fila dentro del grupo
m[1] → segunda fila → indica
la localización de la fila dentro del grupo
Nombre de los elementos

Haciendo referencia a algunos elementos obtendríamos lo siguiente:
• m[0][0] = a
• m[1][1] = y
• m[1][2] = 10
• m[0][2] = w
Ejemplo:
Llenado de un arreglo de enteros de dimensión 3x2. En este ejemplo el llenado lo realiza el usuario, en otros ejemplos se verá como realizar llenado de matrices mediante asignación automática, cálculos de operaciones, etc.

Producto de Matrices
El producto de dos matrices se puede definir sólo si el número de columnas de la matriz izquierda es el mismo que el número de filas de la matriz derecha. Si A es una matriz m×n y B es una matriz n×p, entonces su producto matricial AB es la matriz m×p (m filas, p columnas) dada por:
(AB)[i,j] = A[i,1] B[1,j] + A[i,2] B[2,j] + ... + A[i,n] B[n,j] para cada par i y j.

Por ejemplo:

Operaciones
Para manejar un arreglo, las operaciones a efectuarse son:
-
Declaración del arreglo,
-
Creación del arreglo,
-
Inicialización de los elementos del arreglo,
-
Acceso a los elementos del arreglo.
Declaración de Matrices en C++
La sintaxis para declarar un arreglo multidimensional es la siguiente:
<tipo>[ , ...]<identificador >;
Donde:
Tipo indica el tipo correspondiente a los elementos del arreglo,Identificador es el nombre del arreglo, y el par de corchetes, la coma y las diéresis,[ , ...], representan las dimensiones del arreglo. Los corchetes encierran todas las comas necesarias para separar las dimensiones del arreglo.
Ejemplos:
double [ , ] bidim;// Dos dimensiones.
int [ , , ] tridim ;// Tres dimensiones.
char [ , , , ] enciclopedia;// Cuatro dimensiones.
Observe que, en la declaración, el espacio entre los corchetes está vacío. Esto se debe a que, durante dicha operación, no se reserva espacio en la memoria.
Creación
La creación de un arreglo multidimensional consiste en reservar espacioen la memoria para todos sus elementos, utilizando la siguiente sintaxis:
<identificador > =new<tipo> [dim1, dim2 ... dimN]
Donde:
new es el operador para gestionar espacio de memoria, en tiempo de ejecución, dim1, dim2 ,dimN son valores enteros que representan las dimensiones del arreglo.
El tamaño del arreglo es el resultado de multiplicar los valores de las dimensiones y representa el número de elementos del arreglo.
Programación en C++

#include<iostream>
#include<math.h>
using namespace std;
int multip_mat(), i, j, k, filas1, columnas1, filas2, columnas2;
int numeros1[10][10], numeros2[10][10], multiplicacion[10][10];
double form_mat(), Vt, Vo, w, t, M[200][200];
int a, b;
int main ()
{
int x;
do
{
cout<<"MENU DE OPCIONES \n";
cout<< "(1): MULTIPLICACION DE MATRICES \ n";
cout<< "(2): RESOLVER LA FORMULA: V(t)=Vo*sin(w*t)\n";
int opcion;
cout<<"ELIJA LA OPCION QUE DESEE: \n"; cin>>opcion;
cout<<endl;
switch(opcion)
{
case1:
{
multip_mat();
}break;
case2:
{
form_mat();
}break;
default: cout<<"NO ES OPCION";
}
cout<<endl;
cout<< "¿quieres elegir otra opcion del menú \ n";
cout<< "(1): SI<<endl";
cout<< "(2): NO<<endl";
cout<< "ELIJA SI O NO: "; cin>>x;
}
while(x==1);
system("pause");
return 0;
}
int multip_mat()
{
cout<<"INGRESE EL NUMERO DE FILAS DEL PRIMER MATRIZ: ";cin>>filas1;
cout<<"INGRESE EL NUMERO DE COLUMNAS DEL PRIMER MATRIZ: ";cin>>columnas1;
cout<<"INGRESE EL NUMERO DE FILAS DEL SEGUNDO MATRIZ: ";cin>>filas2;
cout<<"INGRESE EL NUMERO DE FILAS DEL SEGUNDO MATRIZ: ";cin>>columnas2;
if(columnas2==filas2)
{
cout<<"SI SE PUEDE REALIZAR LA MULTIPLICACION "<<endl<<endl;
}
else
cout<<"NO SE PUEDE REALIZAR LA MULTIPLICACION "<<endl<<endl;
cout<< "MATRIZ 1 \ n";
for(i=0;i<filas1;i++)
{
for(j=0; j<columnas1; j++)
{
cout<<"DIGITE UN NUMERO["<<i<<"]["<<j<<"]:"; cin>>numeros1[i][j];
}
}
for(i=0; i<filas1; i++)
{
for(j=0; j<columnas1; j++)
{
cout<<numeros1[i][j]<<"";
}
cout<<endl;
}
cout<<endl;
cout<< "MATRIZ 2\n";
for(i=0; i<filas2;i++)
{
cout<<"DIGITE UN NUMERO["<<i<<"]["<<j<<"]:"; cin>>numeros2[i][j];
}
for(i=0; i<filas2; i++)
{
for(j=0; j<columnas2; j++)
{
cout<<numeros2[i][j]<<"";
}
cout<<endl;
}
cout<<endl;
cout<<"LA MULTIPLICACION DE MATRICES \n";
for(i=0; i<filas1;i++)
{
for(j=0;j<columnas2; j++)
{
multiplicacion [i][j]=0;
}
}
for(i=0; i<filas1; i++)
{
for(j=0; j<columnas2; j++)
{
for(k=0; k<filas2; k++)
{
multiplicacion[i][j]=multiplicacion[i][j]+numeros1[i][k]*numeros2[k][j];
}
}
}
for(i=0; i<filas1;i++)
{
for(j=0; j<columnas2; j++)
{
cout<<multiplicacion[i][j]<<"";
}
cout<<endl;
}
}
double form_mat()
{
cout<<"INGRESE EL VALOS Vo:"; cin>>Vo;
a=0;
for(w=5; w<=10; w=w+0.25)
{
b=0;
for(t=0.1; t<=2; t=t+0.1)
{
M[a][b]=Vo*sin(w*t);
b++;
}
a++;
}
for(i=0; i<40; i++)
{
for(j=0; j<19; j++)
{
cout<<M[i][j]<<"";
}
cout<<endl;
}
}