Desafío: Arreglos Multidimensionales
A veces es útil declarar constantes para indexar arreglos multidimensionales. A continuación se muestra el arreglo del cuestionario del capítulo anterior:
main.cs
const int FRUITS = 0; const int VEGETABLES = 1; string[,] foods = { { "Apple", "Apricot", "Banana", "Grapes", "Lime" }, // fruits { "Tomato", "Cabbage", "Carrot", "Pumpkin", "Broccoli" }, // vegetables };
Hemos creado dos constantes FRUITS
y VEGETABLES
con valores 0
y 1
, que representan las filas 0
para frutas y 1
para verduras en el arreglo foods
.
Por lo tanto, si necesitamos acceder al elemento "Cabbage"
de las verduras, simplemente podemos escribir:
main.cs
foods[VEGETABLES][1];
Este truco puede no ser demasiado útil en arreglos pequeños como este, sin embargo, al trabajar con arreglos más complejos, constantes como estas pueden ayudar a acceder fácilmente a los elementos del arreglo, evitando la necesidad de memorizar qué fila contiene qué elementos, especialmente si hemos clasificado los elementos en filas.
Ahora el reto es crear un arreglo 2D de tipo string
llamado productOptions
, con una forma de 4x3 (4 filas, 3 columnas). Inicialízalo con los siguientes datos:
- Fila 1:
"Red", "Green", "White"
; - Fila 2:
"Square", "Rectangle", "Sphere"
; - Fila 3:
"Thick", "Medium", "Thin"
; - Fila 4:
"Printed", "Crafted", "None"
.
Accede al elemento "Crafted"
mediante indexación y muéstralo. Utiliza la variable constante relevante para ello.
main.cs
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { const int COLOR = 0; const int SHAPE = 1; const int WIDTH = 2; const int DESIGN = 3; // Create the array below _______ = { _______ }; // Reference the relevant element in the WriteLine statement Console.WriteLine(productOptions[DESIGN, 1]); Console.WriteLine(productOptions[COLOR, 2]); Console.WriteLine(productOptions[SHAPE, 0]); Console.WriteLine(productOptions[WIDTH, 1]); } } }
- Para declarar un arreglo multidimensional, se agregan comas dentro de los corchetes (
[]
) según la cantidad de dimensiones del arreglo. Por ejemplo, un arreglo de enteros 3D se declararía comoint[,,] arrayName = { ... };
. - Es válido utilizar valores de variables o constantes en la indexación.
Por ejemplo, si tenemos un arreglo
int[] exampleArray = { 1, 2, 3, 4, 5 };
y una constanteconst int someIndex = 2
, es válido escribirexampleArray[someIndex]
para acceder al elemento 3 del arreglo.
main.cs
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { const int COLOR = 0; const int SHAPE = 1; const int WIDTH = 2; const int DESIGN = 3; // Create the array below string[,] productOptions = { { "Red", "Green", "White" }, { "Square", "Rectangle", "Sphere" }, { "Thick", "Medium", "Thin" }, { "Printed", "Crafted", "None" } }; // Reference the relevant element in the WriteLine statement Console.WriteLine(productOptions[DESIGN, 1]); Console.WriteLine(productOptions[COLOR, 2]); Console.WriteLine(productOptions[SHAPE, 0]); Console.WriteLine(productOptions[WIDTH, 1]); } } }
¡Gracias por tus comentarios!