25-Recorrer una matriz en C#


Para recorrer los elementos de una Matriz en C# podemos utilizar los bucles for o foreach

Podemos usar también la propiedad Length para sabernos cuantas veces el bucle tiene que ser ejecutado para recorrer toda la Matriz

Nel siguiente ejemplo recorremos una matriz con autos utilizando el bucle for


Ejemplo

string[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
for (int i = 0; i < cars.Length; i++) 
{
  Console.WriteLine(cars[i]);
}                    



...

El bucle foreach

El bucle foreach se usa exclusivamente para recorrer los elementos de una matriz

Sintaxis

foreach (type variableName in arrayName) 
{
  // code block to be executed
}                        

Vamos usar el bucle foreach para recorrer la matriz de autos

Ejemplo

string[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
foreach (string i in cars) 
{
  Console.WriteLine(i);
}                           

Los dos bucles se pueden usar para recorrer los elementos de una matriz, pero como hemos visto en los ejemplos anteriores el bucle foreach es más fácil escribir y entendible




Ordenar una matriz

El método sort() ordena una matriz alfabéticamente o en orden descendiente

Ejemplo

// Ordenar una string
string[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
Array.Sort(cars);
foreach (string i in cars)
{
  Console.WriteLine(i);
}                        

Utilizando el mismo método podemos ordenar números enteros como vemos nel ejemplo

Ejemplo

// Ordenar un int
int[] myNumbers = {5, 1, 8, 9};
Array.Sort(myNumbers);
foreach (int i in myNumbers)
{
  Console.WriteLine(i);
}                       



Otros Metodos

En C# tenemos otros métodos útiles para utilizar en matrices, como por ejemplo

  • Max método que encuentra el numero máximo de una Matriz
  • Min Encuentra el numero mínimo de una matriz
  • Sum encuentra la suma de todos los números de la matriz

Ejemplo

        using System;
        using System.Linq;
        
        namespace MyApplication
        {
          class Program
          {
            static void Main(string[] args)
            {
              int[] myNumbers = {5, 1, 8, 9};
              Console.WriteLine(myNumbers.Max());  // devuelve el mayor valor
              Console.WriteLine(myNumbers.Min());  // devuelve el valor más pequeño
              Console.WriteLine(myNumbers.Sum());  // devuelve la suma de los elementos
            }
          }
        }                     



Matrices multidimensionales

Una matriz multidimensional es una matriz de matrices

Esto quiere decir que dentro de una matriz pueden existir otras matrices.

Matrices bidimensionales

Son dos matrices dentro de una sola matriz

Ejemplo

int[,] numbers = { {1, 4, 2}, {3, 6, 8} };                      

Solo por curiosidad nos damos cuenta que las matrices multidimensionales que contengan solo una coma [,] se refieren a matrices bidimensionales, si tenemos dos comas [, ,] nos estamos refiriendo a matrices tridimensionales

El arreglo anterior inserido en una tabla se vería da siguiente forma:




Acceso a elementos de matrices 2D

Para acceder a elementos de matrices bidimensionales, debemos especificar dos índices, el primero índice nos hace referencia a la matriz, y el segundo índice nos hace referencia al elemento de esa matriz

Ejemplo

int[,] numbers = { {1, 4, 2}, {3, 6, 8} };
Console.WriteLine(numbers[0, 2]);  // Salida 2                  

En el ejemplo vemos que el índice [0] va hacer referencia a la primera matriz

A continuación vemos un índice [2] que hará referencia al elemento de la primera matriz

Concluimos que su salida será 2




Cambiar elementos de una matriz 2D

Para cambiar los elementos de una matriz usaremos dos índices, que como en el ejemplo anterior, el primero va hacer referencia a la matriz y el segundo índice al elemento de la matriz correspondiente

Ejemplo

int[,] numbers = { {1, 4, 2}, {3, 6, 8} };
numbers[0, 0] = 5;  // Change value to 5
Console.WriteLine(numbers[0, 0]); // Salida 5                 

Explicación

Vemos numbers[0, 0] = 5 lo que nos reemplaza en la primera matriz (0) el primero número (0) por un (5)

Si ahora pedimos que nos imprima el primero numero de la primera matriz Console.WriteLine(numbers[0, 0]); obtenemos en la salida un 5 ya que el otro fue reemplazado por este




Bucle a través de una matriz 2D

Para recorrer una matriz 2D podemos usar el bucle foreach

Ejemplo

 int[,] numbers = { {1, 4, 2}, {3, 6, 8} };
 foreach (int i in numbers)
 {
   Console.WriteLine(i);
 }    
 

Salida 1 4 2 3 6 8


También puede utilizar un bucle for . Para arreglos multidimensionales, necesita un bucle para cada una de las dimensiones de la matriz.

También tenga en cuenta que tenemos que usar GetLength() en vez de Length para especificar cuántas veces se debe ejecutar el bucle:

Ejemplo

int[,] numbers = { {1, 4, 2}, {3, 6, 8} };
for (int i = 0; i < numbers.GetLength(0); i++) 
{ 
  for (int j = 0; j < numbers.GetLength(1); j++) 
  { 
    Console.WriteLine(numbers[i, j]); 
  } 
}      

Salida 1 4 2 3 6 8






Publicar un comentario

0 Comentarios