2008-12-12 9 views
5

Este código arroja el error de compilación que figura en el título, ¿alguien me puede decir qué cambiar?tipos no válidos 'int [int]' para el subíndice de matriz

#include <iostream> 

using namespace std; 

int main(){ 

    int myArray[10][10][10]; 

    for (int i = 0; i <= 9; ++i){ 
     for (int t = 0; t <=9; ++t){    
      for (int x = 0; x <= 9; ++x){ 
       for (int y = 0; y <= 9; ++y){ 

       myArray[i][t][x][y] = i+t+x+y; //This will give each element a value 

         } 
         } 
         } 
         } 

    for (int i = 0; i <= 9; ++i){ 
     for (int t = 0; t <=9; ++t){ 
      for (int x = 0; x <= 9; ++x){ 
       for (int y = 0; y <= 9; ++y){ 

       cout << myArray[i][t][x][y] << endl; 

        } 
        } 
        }     
        } 

    system("pause"); 

} 

gracias de antemano

Respuesta

11

Usted se subscripting una matriz tridimensional myArray[10][10][10] cuatro veces myArray[i][t][x][y]. Probablemente necesites agregar otra dimensión a tu matriz. También considere un contenedor como Boost.MultiArray, aunque eso probablemente sea más importante en este momento.

+0

maldición, debo haber borrado accidentalmente esa línea antes de que comenzara a intentar ejecutarla. – user33061

1

Usted está tratando de acceder a una matriz de 3 dimensiones con 4 DE-referencias

Sólo tiene 3 bucles en vez de 4, o int myArray[10][10][10][10];

1
int myArray[10][10][10]; 

debería ser

int myArray[10][10][10][10]; 
5

¿Qué cambiar? Además del problema de la matriz tridimensional o dimensional, debes deshacerte de los números mágicos (10 y 9).

const int DIM_SIZE = 10; 
int myArray[DIM_SIZE][DIM_SIZE][DIM_SIZE]; 

for (int i = 0; i < DIM_SIZE; ++i){ 
    for (int t = 0; t < DIM_SIZE; ++t){    
     for (int x = 0; x < DIM_SIZE; ++x){ 
+0

Por si acaso en el futuro tiene una cantidad de dedos diferente ;-) –

0

Creo que había inicializado una matriz en 3D pero está intentando acceder a una matriz con 4 dimensiones.

+0

Mi consejo al dar respuestas es tratar de señalar partes específicas del código original de la pregunta. En su caso, significa incluir '' 'int myArray [10] [10] [10];' '' para la referencia de matriz tridimensional y '' 'myArray [i] [t] [x] [y ] = i + t + x + y; '' 'para la referencia de matrices thr 4-domensional. A veces las personas rechazarán si no tienen un contexto para entender su respuesta. –