Arreglos bidimensionales en C#
Las matrices o arreglos de dos dimensiones, son arrays bidimensionales cuyos elementos tienen dos indices. En C Sharp existen dos tipos de arreglos bidimensionales, los rectangulares y los dinámicos. Por lo general, cuando accedemos a arreglos bidimensionales utilizamos los términos filas y columnas.
En los arreglos bidimensionales rectangulares, cada fila tiene la misma cantidad de columnas. Por otro lado, las filas de los arreglos bidimensionales dinámicos pueden tener diferente cantidad de columnas. A continuación, una serie de ejemplos en donde se explica cómo se declara e inician los dos tipos de arreglos:
Declaración e iniciación de arreglos de dos dimensiones
using System;
public class ArregloDosDimensiones {
static void Main() {
// declaracion e iniciación de arreglos rectangulares
int[,] arreglo1 = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } };
// declaración e iniciación de arreglos dinamicos
int[][] arreglo2 = new int[ 3 ][];
string salida = "";
arreglo2[ 0 ] = new int[] { 1, 2 };
arreglo2[ 1 ] = new int[] { 3 };
arreglo2[ 2 ] = new int[] { 4, 5, 6 };
salida = "Valores en arreglo1 por fila\n";
// salida del arreglo1
for ( int i = 0; i < arreglo1.GetLength( 0 ); i++ ) {
for ( int j = 0; j < arreglo1.GetLength( 1 ); j++ )
salida += arreglo1[ i, j ] + " ";
salida += "\n";
}
salida += "\nValores en arreglo2 por fila\n";
// salida del arreglo2
for ( int i = 0; i < arreglo2.Length; i++ ) {
for ( int j = 0; j < arreglo2[ i ].Length; j++ )
salida += arreglo2[ i ][ j ] + " ";
salida += "\n";
}
Console.WriteLine(salida);
}
}
Salida…
1 2 3
4 5 6
Valores en arreglo2 por fila
1 2
3
4 5 6
Ejemplo con arreglos bidimensionales
using System;
public class DoubleArray {
static int[][] calificacion;
static int estudiantes, examenes;
static void Main() {
string salida = " ";
calificacion = new int[ 3 ][];
calificacion[ 0 ] = new int[]{ 77, 68, 86, 73 };
calificacion[ 1 ] = new int[]{ 96, 87, 89, 81 };
calificacion[ 2 ] = new int[]{ 70, 90, 86, 81 };
estudiantes = calificacion.Length; // numero de estudiantes
examenes = calificacion[ 0 ].Length; // numero de examenes
// columnas
for ( int i = 0; i < examenes; i++ )
salida += "[" + i + "] ";
// filas
for ( int i = 0; i < estudiantes; i++ ) {
salida += "\ncalificaciones[" + i + "] ";
for ( int j = 0; j < examenes; j++ )
salida += calificacion[ i ][ j ] + " ";
}
salida += "\n\nCal. m&amp;aacute;s baja: " + minimo() +
"\nCal. m&amp;aacute;s alta: " + maximo() + "\n";
for ( int i = 0; i < estudiantes; i++ )
salida += "\nEl promedio por estudiante " + i + " es " +
promedio( calificacion[ i ] );
Console.WriteLine(salida);
}
// buscar calificacion minima en el arreglo
static public int minimo() {
int baja = 100;
for ( int i = 0; i < estudiantes; i++ )
for ( int j = 0; j < examenes; j++ )
if ( calificacion[ i ][ j ] < baja )
baja = calificacion[ i ][ j ];
return baja;
}
// buscar calificacion maxima en en arreglo
static public int maximo() {
int alta = 0;
for ( int i = 0; i < estudiantes; i++ )
for ( int j = 0; j < examenes; j++ )
if ( calificacion[ i ][ j ] > alta )
alta = calificacion[ i ][ j ];
return alta;
}
// determinar el promedio de la calificacion
static public double promedio( int[] calificaciones ) {
int total = 0;
for ( int i = 0; i < calificaciones.Length; i++ )
total += calificaciones[ i ];
return ( double ) total / calificaciones.Length;
}
}
Salida…
calificaciones[0] 77 68 86 73
calificaciones[1] 96 87 89 81
calificaciones[2] 70 90 86 81
Cal. más baja: 68
Cal. más alta: 96
El promedio por estudiante 0 es 76
El promedio por estudiante 1 es 88,25
El promedio por estudiante 2 es 81,75
Bonus: sentencia foreach en C#
Cuando de recorrer arreglos se trata, existe una sentencia bastante útil: foreach. Foreach es similar a un for, solo que es un poco más simple. La sintaxis es foreach(VARIABLE in ARREGLO), y cada vez que ocurre una iteración, VARIABLE va tomando los valores del arreglo en orden:
using System;
class Foreach {
// main entry point for the application
static void Main(string[] args) {
int[,] calificaciones = { { 77, 68, 86, 73 },
{ 98, 87, 89, 81 }, { 70, 90, 86, 81 } };
int baja = 100;
foreach ( int calificacion in calificaciones ) {
if ( calificacion < baja )
baja = calificacion;
}
Console.WriteLine( "La calificacion mas baja es: " + baja );
}
}
17 Comentarios | deja el tuyo





hola men me fue de mucha ayuda pero tengo un pekeño prblema yo necesito hacer q una matriz de 3*3 se multiplique una fila por una columna algo asi
AxB[0,0]=A[0,0]*B[0,0]+A[0,1]*B[1,0]+A[0,2]*B[2,0];
y asi con cada una de las posiciones
si me pudieras ayudar t lo agradecería un mundo
Necesito saber como se hace este ej.Se recibe un mensaje codificado formado solo por caracteres alfabéticos en mayúsculas .El fin del texto se indica con una barra(´/`).el poseso de codificación consiste en remplazar cada letra del texto por otra de acuerdo a un numero k de forma q cada letra q ocupa el k esimo lugar siguiente en el codigo ASCII.,
POR EJEMPLO si k es 3.
mensaje codificado:´SURJUDPDFLRQ´
MENSAJE A RECUPERAR:PROGRAMACION
Desde ya muchas gracias.