# Cómo crear y utilizar arrays bidimensionales (two dimensional array) en C++

Un array bidimensional en C++ se utiliza para organizar los datos en forma de tabla. En áreas matemáticas, especialmente en álgebra lineal, los arrays bidimensionales ofrecen una estructura óptima para la visualización de **matrices**.

## ¿Qué es exactamente un 2D array in C++?

Un array bidimensional en C++ es una estructura de datos para almacenar elementos en una **disposición bidimensional similar a una tabla**. A diferencia de los arrays unidimensionales, que solo contienen una serie de elementos, un array bidimensional organiza los datos en filas y columnas. Los elementos de un array bidimensional se definen por sus posiciones, que se especifican mediante índices de fila y columna. Esta estructura facilita el acceso y la manipulación de puntos de datos individuales. Los arrays bidimensionales tienen múltiples aplicaciones, desde el cálculo matemático con matrices hasta la gestión de datos en formato raster.

## Así se estructura un array bidimensional en C++

En C++, la sintaxis para la declaración de un array bidimensional consta de los siguientes elementos:

```c++
data_type arrayName[num_rows][num_cols];
```

- **`data_type`**: El tipo de dato especifica qué tipo de datos se deben almacenar en las celdas del array bidimensional. Esto puede ser, por ejemplo, `int` para números enteros, `double` para números de punto flotante o incluso tipos de datos personalizados.
- **`arrayName`**: El nombre actúa como identificador mediante el cual se puede acceder a todo el array.
- **`num_rows`**: Este fragmento de la sintaxis indica cuántas filas debe tener el array bidimensional.
- **`num_cols`**: Aquí se especifica la cantidad de columnas para cada fila en el array bidimensional.

En el siguiente ejemplo, definimos un array bidimensional llamado `matrix` con 2 filas y 4 columnas, lo que equivale a un total de 12 elementos.

```c++
int matrix[3][4] = {{1, 2, 3, 4}, 
    {5, 6, 7, 8}, 
    {9, 10, 11, 12}};
```

### Crear un array bidimensional en C++

Podemos crear un array bidimensional utilizando un **bucle for**. El bucle externo itera sobre las filas, mientras que el bucle interno recorre las columnas de cada fila. La instrucción `std::cout << matrix[i][j] << " ";` muestra cada elemento. Después de cada fila, generamos una nueva línea con `std::cout << std::endl;` para formatear mejor el resultado.

```c++
#include <iostream> 
 
int main() { 
 
    int matrix[3][4] = {{1, 2, 3, 4}, 
                        {5, 6, 7, 8}, 
                        {9, 10, 11, 12}}; 
 
    for (int i = 0; i < 3; ++i) { 
 
        for (int j = 0; j < 4; ++j) { 
            std::cout << matrix[i][j] << " "; 
        } 
  
        std::cout << std::endl; 
    } 
 
    return 0; 
}
```

En el resultado, los elementos del array bidimensional se representan fila por fila:

```c++
1 2 3 4 
5 6 7 8 
9 10 11 12
```

## Ejemplos de aplicación para arrays bidimensionales en C++

Si [aprendes C++](https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/tutorial-c/), eventualmente trabajarás con arrays. A continuación, te mostramos ejemplos típicos de aplicaciones para arrays bidimensionales en C++.

### Array bidimensional en C++ como entrada del usuario

He aquí un ejemplo sencillo en C++ en el que no definimos un array bidimensional con valores fijos, sino que lo procesamos como entrada del usuario. En este caso, pedimos al usuario que introduzca el número de filas y columnas, seguido de los elementos reales del array:

```c++
#include <iostream> 
 
int main() { 
 
    int numRows, numCols; 
    std::cout << "Number of rows: "; 
    std::cin >> numRows; 
    std::cout << "Number of columns: "; 
    std::cin >> numCols; 
 
    int userArray[numRows][numCols]; 
 
    std::cout << "Please enter in elements:\n"; 
    for (int i = 0; i < numRows; ++i) { 
        for (int j = 0; j < numCols; ++j) { 
            std::cout << "Element [" << i << "][" << j << "]: "; 
            std::cin >> userArray[i][j]; 
        } 
    } 
 
    std::cout << "2D array:\n"; 
    for (int i = 0; i < numRows; ++i) { 
        for (int j = 0; j < numCols; ++j) { 
            std::cout << userArray[i][j] << " "; 
        } 
        std::cout << std::endl; 
    } 
 
    return 0; 
}
```

Si se pasan `2` filas y `3` columnas y los valores `1, 2, 3, 4, 5, 6` como entrada del usuario, entonces al array bidimensional es:

```c++
2D array: 
1 2 3 
4 5 6
```

### Suma de matrices con arrays bidimensionales

Usando [operadores C](https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/c-operators/) como `+` podemos sumar fácilmente matrices con arrays bidimensionales en C++.

```c++
#include <iostream> 
 
const int numRows = 2;  
const int numCols = 2;  
 
void matrixAddition(int A[][numCols], int B[][numCols], int result[][numCols]) { 
    for (int i = 0; i < numRows; ++i) { 
        for (int j = 0; j < numCols; ++j) { 
            result[i][j] = A[i][j] + B[i][j]; 
        } 
    } 
} 
 
void displayMatrix(int matrix[][numCols]) { 
    for (int i = 0; i < numRows; ++i) { 
        for (int j = 0; j < numCols; ++j) { 
            std::cout << matrix[i][j] << " "; 
        } 
        std::cout << std::endl; 
    } 
} 
 
int main() { 
    int matrixA[numRows][numCols] = {{1, 2}, {3, 4}}; 
    int matrixB[numRows][numCols] = {{5, 6}, {7, 8}}; 
    int resultMatrix[numRows][numCols]; 
 
    matrixAddition(matrixA, matrixB, resultMatrix); 
 
    // Output of matrix A and B and their sum 
    std::cout << "Matrix A:\n"; 
    displayMatrix(matrixA); 
 
    std::cout << "\nMatrix B:\n"; 
    displayMatrix(matrixB); 
 
    std::cout << "\nSum (A + B):\n"; 
    displayMatrix(resultMatrix); 
 
    return 0; 
}
```

En primer lugar, creamos las matrices `2x2` `A` y `B`, y su suma se calcula y se muestra en la matriz resultante. La función `matrixAddition` toma las dos matrices iniciales y la matriz resultante como argumentos y realiza la suma. La función `displayMatrix` muestra la suma de las matrices en la consola.

Obtenemos este resultado:

```c++
Matrix A: 
1 2 
3 4 
 
Matrix B: 
5 6 
7 8 
 
Sum (A + B): 
6 8 
10 12
```


This is a markdown version of: [https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/arrays-bidimensionales-2d-array-en-c-plus-plus/](https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/arrays-bidimensionales-2d-array-en-c-plus-plus/) for AI/LLM consumption.