Dominando arrays multidimensionales en C: 2D y 3D explicados
Arrays multidimensionales en C
En este tutorial, aprenderá a trabajar con arrays multidimensionales (arrays bidimensionales y tridimensionales) con la ayuda de ejemplos.
En programación C, puede crear un array de arrays. Estos arrays se conocen como arrays multidimensionales. Por ejemplo,
float x[3][4];
Aquí, x es un array bidimensional (2d). El array puede contener 12 elementos. Puede pensar en el array como una tabla con 3 filas y cada fila tiene 4 columnas.

De manera similar, puede declarar un array tridimensional (3d). Por ejemplo,
float y[2][4][3];
Aquí, el array y puede contener 24 elementos.
Inicializar un array multidimensional
Aquí es cómo puede inicializar arrays bidimensionales y tridimensionales:
Inicialización de un array 2d
// Diferentes formas de inicializar array bidimensional
int c[2][3] = {{1, 3, 0}, {-1, 5, 9}};
int c[][3] = {{1, 3, 0}, {-1, 5, 9}};
int c[2][3] = {1, 3, 0, -1, 5, 9};
Inicialización de un array 3d
Puede inicializar un array tridimensional de manera similar a un array bidimensional. Aquí hay un ejemplo,
int prueba[2][3][4] = {
{{3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2}},
{{13, 4, 56, 3}, {5, 9, 3, 5}, {3, 1, 4, 9}}
};
Ejemplo 1: Array bidimensional para almacenar e imprimir valores
// Programa en C para almacenar temperatura de dos ciudades de una semana y mostrarla.
#include <stdio.h>
const int CIUDAD = 2;
const int SEMANA = 7;
int main() {
int temperatura[CIUDAD][SEMANA];
// Usar bucles anidados para almacenar valores en un array 2d
for (int i = 0; i < CIUDAD; ++i) {
for (int j = 0; j < SEMANA; ++j) {
printf("Ciudad %d, Día %d: ", i + 1, j + 1);
scanf("%d", &temperatura[i][j]);
}
}
printf("\nMostrando valores: \n\n");
// Usar bucles anidados para mostrar valores de un array 2d
for (int i = 0; i < CIUDAD; ++i) {
for (int j = 0; j < SEMANA; ++j) {
printf("Ciudad %d, Día %d = %d\n", i + 1, j + 1, temperatura[i][j]);
}
}
return 0;
}
Salida
Ciudad 1, Día 1: 33 Ciudad 1, Día 2: 34 Ciudad 1, Día 3: 35 Ciudad 1, Día 4: 33 Ciudad 1, Día 5: 32 Ciudad 1, Día 6: 31 Ciudad 1, Día 7: 30 Ciudad 2, Día 1: 23 Ciudad 2, Día 2: 22 Ciudad 2, Día 3: 21 Ciudad 2, Día 4: 24 Ciudad 2, Día 5: 22 Ciudad 2, Día 6: 25 Ciudad 2, Día 7: 26 Mostrando valores: Ciudad 1, Día 1 = 33 Ciudad 1, Día 2 = 34 Ciudad 1, Día 3 = 35 Ciudad 1, Día 4 = 33 Ciudad 1, Día 5 = 32 Ciudad 1, Día 6 = 31 Ciudad 1, Día 7 = 30 Ciudad 2, Día 1 = 23 Ciudad 2, Día 2 = 22 Ciudad 2, Día 3 = 21 Ciudad 2, Día 4 = 24 Ciudad 2, Día 5 = 22 Ciudad 2, Día 6 = 25 Ciudad 2, Día 7 = 26
Ejemplo 2: Suma de dos matrices
// Programa en C para encontrar la suma de dos matrices de orden 2*2
#include <stdio.h>
int main() {
float a[2][2], b[2][2], resultado[2][2];
// Tomar entrada usando bucles for anidados
printf("Ingrese elementos de la 1ra matriz\n");
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j) {
printf("Ingrese a%d%d: ", i + 1, j + 1);
scanf("%f", &a[i][j]);
}
// Tomar entrada usando bucles for anidados
printf("Ingrese elementos de la 2da matriz\n");
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j) {
printf("Ingrese b%d%d: ", i + 1, j + 1);
scanf("%f", &b[i][j]);
}
// sumar elementos correspondientes de dos arrays
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j) {
resultado[i][j] = a[i][j] + b[i][j];
}
// Mostrar la suma
printf("\nSuma de Matriz:");
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j) {
printf("%.1f\t", resultado[i][j]);
if (j == 1) printf("\n");
}
return 0;
}
Salida
Ingrese elementos de la 1ra matriz Ingrese a11: 2; Ingrese a12: 0.5; Ingrese a21: -1.1; Ingrese a22: 2; Ingrese elementos de la 2da matriz Ingrese b11: 0.2; Ingrese b12: 0; Ingrese b21: 0.23; Ingrese b22: 23; Suma de Matriz: 2.2 0.5 -0.9 25.0
Ejemplo 3: Array tridimensional
// Programa en C para almacenar e imprimir 12 valores ingresados por el usuario
#include <stdio.h>
int main() {
int prueba[2][3][2];
printf("Ingrese 12 valores: \n");
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
for (int k = 0; k < 2; ++k) {
scanf("%d", &prueba[i][j][k]);
}
}
}
// Imprimir valores con índice apropiado.
printf("\nMostrando valores:\n");
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
for (int k = 0; k < 2; ++k) {
printf("prueba[%d][%d][%d] = %d\n", i, j, k, prueba[i][j][k]);
}
}
}
return 0;
}
Salida
Ingrese 12 valores: 1 2 3 4 5 6 7 8 9 10 11 12 Mostrando valores: prueba[0][0][0] = 1 prueba[0][0][1] = 2 prueba[0][1][0] = 3 prueba[0][1][1] = 4 prueba[0][2][0] = 5 prueba[0][2][1] = 6 prueba[1][0][0] = 7 prueba[1][0][1] = 8 prueba[1][1][0] = 9 prueba[1][1][1] = 10 prueba[1][2][0] = 11 prueba[1][2][1] = 12
Lenguaje C
- Ciudades inteligentes: Entregando beneficios tangibles con soluciones de conectividad probadas
- Por qué importan los datos de la ciudad: convertir insights en innovación urbana
- Construir Ciudades Inteligentes Centradas en el Humano: Un Plan Estratégico
- 5 pasos para construir ciudades más inteligentes y seguras
- Dominando arrays en C#: Declaración, inicialización y operaciones
- Cómo pasar arrays 1D y 2D a funciones en C – Guía práctica
- Entendiendo la relación entre arrays y punteros en C
- Arrays en C++: Declaración, inicialización y técnicas con punteros
- Asignación dinámica de arrays en C++: Guía práctica con ejemplos de código
- MATLAB: Dominando Arrays Multidimensionales y Especiales
- Técnicas de Copia de Arrays en Java: Guía Completa