MEJOR SITIO PARA DESARROLLADORES WEB

C++ Tutorial

C++ HOGAR C++ Introducción C++ Empezar C++ Sintaxis C++ Producción C++ Comentarios C++ Variables C++ Entrada de usuario C++ Tipos de datos C++ Operadores C++ Cadenas C++ Matemáticas C++ Booleanos C++ Condiciones C++ Switch C++ While Bucle C++ For Bucle C++ Break/Continue C++ Matrices C++ Estructuras C++ Enumeraciones C++ Referencias C++ Consejos

C++ Funciones

C++ Funciones C++ Parámetros de función C++ Sobrecarga de funciones C++ Alcance C++ Recursión

C++ Clases

C++ POO C++ Clases/Objetos C++ Métodos de clase C++ Constructores C++ Especificadores de acceso C++ Encapsulación C++ Herencia C++ Polimorfismo C++ Archivos C++ Excepciones C++ Fecha

C++ Cómo

Suma dos números Números al azar

C++ Referencia

C++ Referencia C++ Palabras clave C++ <iostream> C++ <fstream> C++ <cmath> C++ <string> C++ <cstring> C++ <ctime>

C++ Ejemplos

C++ Ejemplos C++ Compilador C++ Ejercicios C++ Prueba C++ Certificado

Lenguaje C++. W3Schools lecciones en español

Ua En De

C++ Matrices multidimensionales


Matrices multidimensionales

Una matriz multidimensional es una matriz de matrices.

Para declarar una matriz multidimensional, defina el tipo de variable, especifique el nombre de la matriz seguido de corchetes que especifican cuántos elementos tiene la matriz principal, seguido de otro conjunto de corchetes que indica cuántos elementos tienen las submatrices:

string letters[2][4];

Al igual que con las matrices normales, puede insertar valores con un literal de matriz: una lista separada por comas entre llaves. En una matriz multidimensional, cada elemento de un literal de matriz es otro literal de matriz.

string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};

Cada conjunto de corchetes en una declaración de matriz agrega otra dimensión a una matriz. Se dice que una matriz como la anterior tiene dos dimensiones.

Las matrices pueden tener cualquier número de dimensiones. Cuantas más dimensiones tenga una matriz, más complejo se vuelve el código. La siguiente matriz tiene tres dimensiones:

string letters[2][2][2] = {
  {
    { "A", "B" },
    { "C", "D" }
  },
  {
    { "E", "F" },
    { "G", "H" }
  }
};

Acceder a los elementos de una matriz multidimensional

Para acceder a un elemento de una matriz multidimensional, especifique un número de índice en cada una de las dimensiones de la matriz.

Esta declaración accede al valor del elemento en la primera fila (0) y la tercera columna (2) de la matriz letras.

Ejemplo

string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};

cout << letters[0][2];  // Salidas "C"
Inténtalo tú mismo »

Recuerde que: Los índices de matriz comienzan con 0: [0] es el primer elemento. [1] es el segundo elemento, etc.


Cambiar elementos en una matriz multidimensional

Para cambiar el valor de un elemento, consulte el número de índice del elemento en cada una de las dimensiones:

Ejemplo

string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};
letters[0][0] = "Z";

cout << letters[0][0];  // Now outputs "Z" instead of "A"
Inténtalo tú mismo »

Recorrer una matriz multidimensional

Para recorrer una matriz multidimensional, necesita un bucle para cada una de las dimensiones de la matriz.

El siguiente ejemplo genera todos los elementos de la matriz letras:

Ejemplo

string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};

for (int i = 0; i < 2; i++) {
  for (int j = 0; j < 4; j++) {
    cout << letters[i][j] << "\n";
  }
}
Inténtalo tú mismo »

Este ejemplo muestra cómo recorrer una matriz tridimensional:

Ejemplo

string letters[2][2][2] = {
  {
    { "A", "B" },
    { "C", "D" }
  },
  {
    { "E", "F" },
    { "G", "H" }
  }
};

for (int i = 0; i < 2; i++) {
  for (int j = 0; j < 2; j++) {
    for (int k = 0; k < 2; k++) {
      cout << letters[i][j][k] << "\n";
    }
  }
}
Inténtalo tú mismo »

¿Por qué matrices multidimensionales?

Las matrices multidimensionales son excelentes para representar cuadrículas. Este ejemplo muestra un uso práctico para ellos. En el siguiente ejemplo, utilizamos una matriz multidimensional para representar un pequeño juego de Battleship:

Ejemplo

// We put "1" to indicate there is a ship.
bool ships[4][4] = {
  { 0, 1, 1, 0 },
  { 0, 0, 0, 0 },
  { 0, 0, 1, 0 },
  { 0, 0, 1, 0 }
};

// Keep track of how many hits the player has and how many turns they have played in these variables
int hits = 0;
int numberOfTurns = 0;

// Allow the player to keep going until they have hit all four ships
while (hits < 4) {
  int row, column;

  cout << "Selecting coordinates\n";

  // Ask the player for a row
  cout << "Choose a row number between 0 and 3: ";
  cin >> row;

  // Ask the player for a column
  cout << "Choose a column number between 0 and 3: ";
  cin >> column;

  // Check if a ship exists in those coordinates
  if (ships[row][column]) {
    // If the player hit a ship, remove it by setting the value to zero.
    ships[row][column] = 0;

    // Increase the hit counter
    hits++;

    // Tell the player that they have hit a ship and how many ships are left
    cout << "Hit! " << (4-hits) << " left.\n\n";
  } else {
    // Tell the player that they missed
    cout << "Miss\n\n";
  }

  // Count how many turns the player has taken
  numberOfTurns++;
}

cout << "Victory!\n";
cout << "You won in " << numberOfTurns << " turns";
Ejecutar ejemplo »


Comentarios