tipos de matrices en c

Guía completa de tipos de matrices en C con ejemplos y explicación detallada

La demostración siguiente ilustra la forma en que se llena y se visualiza una matriz bidimensional. Para realizar estas tareas, son requeridos dos bucles, uno para iterar sobre las filas y otro para hacerlo sobre las columnas.

Matrices multidimensionales

Las matrices son estructuras de datos que pueden tener varias dimensiones. Por ejemplo, con las siguientes declaraciones se crean cuatro matrices: dos con dos dimensiones y otras dos con tres dimensiones. En las primeras dos, se declaran la longitud de cada dimensión sin inicializar sus valores. En las últimas dos, se utiliza un inicializador para establecer los valores de cada elemento de la matriz multidimensional.

En este caso, los elementos de las matrices multidimensionales se recorren empezando por los índices de la dimensión más a la derecha, seguidos por los de la siguiente dimensión hacia la izquierda, y así sucesivamente. Para ilustrar, se pueden mencionar una matriz 2D y una matriz 3D.

Por otro lado, utilizar un bucle for anidado en las matrices multidimensionales brinda un mayor control sobre el orden en el que se procesan los elementos de la matriz. Esto permite manipular los índices en un orden diferente al establecido en la declaración y así manipular los elementos de manera eficiente.

Matrices escalonadas

Una matriz escalonada es una matriz que contiene otras matrices, de posibles tamaños diferentes. A veces se le llama "matriz de matrices". Sus elementos son tipos de referencia y se inicializan con null.

A continuación se muestran ejemplos de cómo declarar, inicializar y acceder a matrices escalonadas. En el primer ejemplo, se declara jaggedArray en una instrucción, seguida de la creación de cada matriz independiente en instrucciones posteriores. En el segundo ejemplo, se declara jaggedArray2 y se inicializa en una sola instrucción. También es posible combinar matrices multidimensionales y escalonadas. El tercer ejemplo, jaggedArray3, es una declaración e inicialización de una matriz escalonada unidimensional que contiene elementos con valores predeterminados.

Para poder utilizar los elementos de una matriz escalonada, éstos deben inicializarse. Cada uno de ellos es en sí mismo una matriz. También se pueden usar inicializadores para dar valores a los elementos de la matriz, lo que evita tener que especificar su tamaño.

Matrices unidimensionales

Cómo trabajar con matrices unidimensionales:

Para utilizar una matriz unidimensional, primero hay que crearla utilizando el operador new. Al hacerlo, debemos especificar el tipo de elemento de la matriz y el número de elementos que queremos. Por ejemplo:

int[] array = new int[5],

De esta manera, se crea una matriz unidimensional de cinco enteros, desde array[0] hasta array[4], con valores predeterminados de 0 para cada elemento.

Ejemplo de declaración e inicialización de una matriz unidimensional:

  • int[] array = new int[5],
  • string[] weekday = new string[] { "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo" }

Ejemplo de recorrido de una matriz unidimensional:

Para iterar a través de una matriz unidimensional, se puede utilizar la instrucción foreach. Esta instrucción recorre los elementos de la matriz en orden creciente de índice, comenzando en 0 y terminando en Length - 1. A continuación, se puede realizar una acción con cada elemento, como por ejemplo imprimir su valor.

foreach(string day in weekday)
 , ,Console.WriteLine(day),

Ejemplo de paso de una matriz a un método:

Para pasar una matriz unidimensional a un método, basta con indicarla como argumento en la llamada al método. Por ejemplo:

string[] fruits = new string[] { "Manzana", "Plátano", "Fresa" },
DisplayArray(fruits), // se pasa la matriz como argumento

El método DisplayArray recibe la matriz y muestra todos sus elementos por pantalla.

Ejemplo de modificación de una matriz:

Es posible modificar los elementos de una matriz unidimensional mediante la asignación de nuevos valores directamente en su posición correspondiente. Por ejemplo:

string[] languages = new string[] { "Español", "Inglés", "Francés" },
languages[1] = "Portugués", // se cambia el valor en el índice 1

También se pueden modificar varios elementos de la matriz a la vez, utilizando asignaciones individuales a cada elemento. Ejemplo:

string[] colors = new string[] { "Rojo", "Azul", "Verde" },
colors[1] = "Blanco",
colors[2] = "Negro", // se modifican los valores en los índices 1 y 2

Recuperar el contenido de una celda determinada

Para obtener el valor de una casilla en particular, utilizaremos los corchetes como en nuestro ejemplo anterior, pero esta vez no para establecer los tamaños, sino para indicar la posición específica dentro de la matriz (fila y columna).

Por ejemplo, si tenemos una matriz de 2 por 2, podemos acceder a la casilla 1,1 utilizando los índices correspondientes: myMatriz[1][1]. De la misma manera, podemos acceder a la primera casilla de la matriz utilizando myMatriz[0][0], ya que los índices comienzan desde cero.

Recuerda que para acceder a un valor específico dentro de una matriz, debemos conocer su índice correspondiente y escribirlo entre los corchetes. Esta es una forma eficiente y sencilla de obtener valores de manera precisa dentro de una matriz.

En este artículo

Puedes utilizar una estructura de datos de matriz para almacenar varias variables del mismo tipo. Simplemente especifica el tipo de elementos que deseas guardar al declarar la matriz. Si necesitas que la matriz pueda almacenar elementos de cualquier tipo, puedes utilizar "object" como tipo.

En el sistema de tipos unificado de C#, todos los tipos heredan de Object, ya sean predefinidos, definidos por el usuario, de referencia o de valor.

Al crear la matriz, puedes inicializar sus elementos con valores conocidos. A partir de C# 12, también se puede utilizar una expresión de colección para inicializar cualquier tipo de colección. Los elementos no inicializados tendrán como valor predeterminado el patrón de 0 bits.

Los tipos de referencia, incluidos los no anulables, tendrán como valor predeterminado "null", mientras que los tipos de valor tendrán como valor predeterminado el patrón de 0 bits. Esto se traduce en que la propiedad Nullable.HasValue será false y la propiedad Nullable.Value no estará definida.

En la implementación de .NET,... (aquí debería continuar con el resto del texto original)

Matrices con tipo implícito

Puedes crear una matriz con tipo implícito donde el tipo se deduce de los elementos especificados en el inicializador de matriz. Las reglas aplicables a las variables de tipo implícito también se extienden a las matrices de tipo implícito. Para más información, consulta Variables locales con asignación implícita de tipos.

En el ejemplo anterior, podemos observar que no se utilizan corchetes en el lado izquierdo de la instrucción de inicialización en el caso de las matrices de tipo implícito. Es importante tener en cuenta que las matrices escalonadas se deben inicializar usando new [], al igual que las matrices unidimensionales.

Si deseas crear un tipo anónimo que contiene una matriz, esta deberá tener tipo implícito en el inicializador de objeto del tipo. En el siguiente ejemplo, la matriz contacts es una matriz de tipo implícito que contiene tipos anónimos, cada uno de los cuales posee una matriz denominada PhoneNumbers.

Es importante notar que no se utiliza la palabra clave var dentro de los inicializadores de objeto.

Variables locales con asignación implícita de tipos

Implementando Matrices en C Un Ejemplo Ejemplar

En la sección anterior hablamos sobre la necesidad de almacenar títulos y autores de libros. Ahora, retomaré este ejemplo para mostrarte una solución alternativa a este problema. En lugar de crear dos listas separadas, una para títulos y otra para autores, podemos crear una matriz que contenga toda la información en una sola estructura de datos.

¿Cómo funcionaría esta solución? En la primera columna de la matriz, almacenaríamos los títulos de los libros, mientras que en la segunda columna, guardaríamos los nombres de los autores. Cada fila de la matriz representaría la información completa de un libro.

Esta solución no solo es correcta, sino que también es adecuada para este tipo de situación. Además, nos permite tener toda la información organizada de manera más eficiente y fácilmente accesible.

Esta solución es eficiente y nos permite mantener los datos organizados.

Artículos relacionados