Array bidimensionales, multidimensionales (matrices) Si no

Anuncio
Array bidimensionales, multidimensionales (matrices)
Un array multidimensional o matriz es aquella cuyos elementos se encuentran organizados en una
estructura de varias dimensiones. Para definirlas se utiliza una sintaxis similar a la usada para
declarar array unidimensionales pero separando las diferentes dimensiones mediante comas (,)
Por ejemplo, una matriz multidimensional de elementos de tipo int que conste de 9 elementos
puede tener sus elementos distribuidos en tres dimensiones formando una estructura 3x3, veamos
como se ve esta matriz gráficamente.
Columnas
Filas
1
4
7
2
5
8
3
6
9
En la grafica vemos como se representa una matriz de tres filas x tres columnas.
Como se declara una matriz.
En realidad declarar o leer una matriz se puede hacer de muchas maneras, en este caso,
describiremos la forma más habitual de inicializar una matriz.
int [,] matriz=new int [,] {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
Si no queremos indicar explícitamente los elementos de la matriz al declararla,
podemos obviarlos pero aún así indicar el tamaño de cada dimensión de la matriz
(a los elementos se les daría el valor por defecto de su tipo de dato) así:
int [,] matriz=new int [3, 3];
Como se imprime una matriz.
Siguiendo con nuestro ejemplo de la matriz anterior de 3x3, el siguiente código permitirá ver en
Csharp aplicación consola la salida de esta matriz.
for(int i=0;i<3;i++)
{
for (int j=0; j<3; j++)
{
Console.Write(" {0} ",matriz[i,j]);
}
Console.WriteLine();
}
Console.ReadLine();
Si nos detenemos un momento y observamos el anterior código, se aprecia que los subíndices de
la matriz se inicializan en cero, esto debido a que como la matriz se a declarado como estática, es
decir que los elementos fueron declarados en el programa y no son introducidos por el usuario
mediante el teclado, por esta razón si iniciamos los ciclos for en uno, nos mostraría un error debido
a esto.
Veamos el programa completo que nos proporciona la salida anterior en pantalla.
//Declaramos la matriz de 3x3
int[,] matriz = new int[,] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
//Definimos el titulo del programa
Console.Title = "Ejemplo matrices de numeros enteros en CSharp";
//Imprimimos la matriz
Console.WriteLine("\n");
for(int i=0;i<3;i++)
{
for (int j=0; j<3; j++)
{
Console.Write(" {0} ",matriz[i,j]);
}
Console.WriteLine();
}
Console.ReadLine();
Ahora que ya conocemos como se declara e imprime una matriz, es el momento
de realizar una serie de ejercicios, que nos permitan conocer mas de cerca los
array bidimensionales, multidimensionales.
Ejercicio 28:
Hacer el diagrama y el programa que permita crear e imprimir la matriz identica.
Solucion:
La matriz identidad es aquella cuya diagonal principal esta formada de solamente
números uno (1) o el resto de la matriz son solo ceros (0)... Veamos como se ve
gráficamente una matriz idéntica de 4x4.
1
0
0
0
0
0
0
1
0
0
0
1
0
0
0
1
Variables de entrada de datos
n= Variables que identifica al orden de la matriz.
Variables de proceso
Identica[i,j]= Matriz que almacenara unos en la diagonal principal y el resto de
ceros.
i, j = Variables subíndice de la matriz.
Inicio
n
i= 1, n
j= 1, n
NO
i=j
identica [i, j] = 0
SI
identica [i, j] = 1
Matriz
identica [i, j]
Fin
PRIMERA PARTE: Aplicación Consola
Nuevamente nos dirigimos al menú Archivo, Nuevo, Proyecto. Al hacerlo nos
muestra la pantalla de nuevo proyecto, escogemos Visual C#, Aplicación consola,
le damos el nombre al proyecto, en este caso “matriz_identica_consola”, luego
aceptar, tal y como se muestra en la siguiente pantalla.
Pantalla nuevo proyecto Visual csharp
Después de esto tendremos la pantalla en donde podremos digitar el código
correspondiente para el ejercicio que estamos trabajando. La pantalla es la
siguiente.
Pantalla proyecto matriz_identica_consola Visual csharp
Nos ubicamos dentro de las llaves que encierran al método static void Main(string[]
args) y digitamos el siguiente codigo.
int n;//Indica el orden de la matriz
int i, j;//Variables de los subindices de la matriz
//Definimos el titulo del proyecto
Console.Title = "Matriz Identica en CSharp";
Console.WriteLine("\n");
//Ingresamos el orden de la matriz
Console.Write("Ingrese el orden de la matriz: ");
n = int.Parse(Console.ReadLine());
//Declaramos la matriz de nxn
int[,] identica = new int[n, n];
//Hacemos el llenado de la matriz identica
for (i = 0; i <n; i++)
{
for (j =0; j <n; j++)
{
//Efectuamos la pregunta para llenarla de uno o ceros
if (i == j)
{
//Se llena la matriz de unos
identica[i,j] = 1;
}
else
{
//Se llena la matriz de ceros
identica[i,j] = 0;
}
}
}
Console.WriteLine();
//Imprimimos la matriz
for (i =0; i < n; i++)
{
for (j =0; j <n; j++)
{
Console.Write(" {0 } ", identica[i,j]);
}
Console.WriteLine();
}
Console.ReadLine();
Ahora le damos Depurar, Iniciar depuración o F5, el cual nos permite ir a la
pantalla en donde podremos digitar el orden de la matriz, para luego ser generada,
tal y como se muestra a continuación en la siguiente pantalla.
Pantalla proyecto matriz_identica_consola Visual csharp
Ejercicio 29:
Hacer el diagrama y el programa, que permita generar una matriz de n filas por n columnas. Los
elementos de matriz son números enteros y positivos, los cuales serán generados
Randomicamente, en un rango de 99 a 999. Crear e imprimir dos vectores de la siguiente manera:
Un vector llamado m3 que contenga los números múltiplos de tres.
Un vector llamado m7 que contenga los números múltiplos de siete.
Solucion:
Variables de entrada de datos
n= Variable que identifica al orden de la matriz.
Variables de proceso
matriz[i,j]= Matriz que almacenara numeros enteros y positivos generados
aleatoriamente.
i, j = Variables subíndice de la matriz.
l, k= Variables subíndice de los vectores m3 y m7.
m3 [l]= Vector que almacena los números múltiplos de tres.
m7 [l]= Vector que almacena los números múltiplos de siete.
num= Variable que almacena temporalmente el numero generado aleatoriamente.
Inicio
Random num= Random
n
matriz [n, n]=num (99, 999)
matriz [n, n]
l=k = 0
1
1
i= 1, n
j= 1, n
NO
matriz [I, j]%7=0
matriz [I, j]%3=0
SI
SI
l = l+1
m3 [l] =matriz [I,j]
NO
K = K+1
m7 [K] =matriz [I,j]
Vectores
m3 [l]
m7 [k]
Fin
PRIMERA PARTE: Aplicación Consola
Nuevamente nos dirigimos al menú Archivo, Nuevo, Proyecto. Al hacerlo nos
muestra la pantalla de nuevo proyecto, escogemos Visual C#, Aplicación consola,
le damos el nombre al proyecto, en este caso “matriz_multiplos3y7_consola”,
luego aceptar, tal y como se muestra en la siguiente pantalla.
Pantalla nuevo proyecto Visual csharp
Después de esto tendremos la pantalla en donde podremos digitar el código
correspondiente para el ejercicio que estamos trabajando. La pantalla es la
siguiente.
Pantalla proyecto matriz_multiplos3y7_consola Visual csharp
Nos ubicamos dentro de las llaves que encierran al método static void Main(string[]
args) y digitamos el siguiente codigo.
int n;//Indica el orden de la matriz
int i, j;//Variables de los subindices de la matriz
int l, k;//Variables de los subindices de los vectores
// Definimos los vectores
int[] m3 = new int[100];//Definicion del vector m3 de cien posiciones
int[] m7 = new int[100];//Definicion del vector m7 de cien posiciones
//Definimos la semilla para la generacion de los numeros aleatorios
Random num = new Random(DateTime.Now.Millisecond);
//Definimos el titulo del proyecto
Console.Title = "Matriz y Vectores multiplos de tres y siete en CSharp";
Console.WriteLine("\n");
//Ingresamos el orden de la matriz
Console.Write("Ingrese el orden de la matriz: ");
n = int.Parse(Console.ReadLine());
//Declaramos la matriz de nxn
int[,] matriz = new int[n, n];
//Hacemos el llenado de la matriz Randomicamente
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
matriz[i, j] = num.Next(99, 9999);
}
}
Console.WriteLine();
Console.WriteLine("Matriz Generada Inicialmente");
Console.WriteLine("----------------------------");
//Imprimimos la matriz
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
Console.Write(" {0 } ", matriz[i, j]);
}
Console.WriteLine();
}
Console.WriteLine();
//Incializamos las variables l y k en cero
l = k = 0;
//Efectuamos el recorrido de la matriz para hallar los multiplos de tres
//y de siete los cuales se almacenaran en los vectores m3 y m7
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
//Efectuamos la pregunta para determinar si es muliplo de tres
if (matriz[i, j] % 3 == 0)
{
//Incrementamos la variable l en uno
l++;
//Introducimos el numero en el vector m3
m3[l] = matriz[i, j];
}
else
//Efectuamos la pregunta para determinar si es muliplo de siete
if (matriz[i, j] % 7 == 0)
{
//Incrementamos la variable k en uno
k++;
//Introducimos el numero en el vector m3
m7[k] = matriz[i, j];
}
}
}
Console.WriteLine();
//Imprimimos el vector m3
Console.WriteLine("Vector multiplos de tres");
Console.WriteLine("-----------------------------");
for (i = 1; i <=l; i++)
{
Console.WriteLine("Posicion: {0} {1}", i, m3[i]);
}
Console.WriteLine();
//Imprimimos el vector m7
Console.WriteLine("Vector multiplos de siete");
Console.WriteLine("-----------------------------");
for (i = 1; i <= k; i++)
{
Console.WriteLine("Posicion: {0} {1}", i, m7[i]);
}
Console.ReadLine();
Ahora le damos Depurar, Iniciar depuración o F5, el cual nos permite ir a la
pantalla en donde podremos digitar el orden de la matriz, para luego ser generada,
aleatoriamente y la creación de los vectores m3 y m7 respectivamente, tal y como
se muestra a continuación en la siguiente pantalla.
Pantalla proyecto matriz_multiplos3y7_consola Visual csharp
Descargar