2008-12-12 11 views
5

Ten kod powoduje zgłoszenie błędu kompilacji podanego w tytule, czy ktoś może mi powiedzieć, co zmienić?nieprawidłowe typy 'int [int]' dla indeksu tablicy

#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"); 

} 

góry dzięki

Odpowiedz

11

Jesteś indeksowanie trójwymiarową tablicę myArray[10][10][10] cztery razy myArray[i][t][x][y]. Prawdopodobnie będziesz musiał dodać kolejny wymiar do swojej tablicy. Weź pod uwagę pojemnik taki jak Boost.MultiArray, ale prawdopodobnie jest to nad głową w tym momencie.

+0

Do cholery, musiałem przypadkowo usunąć tę linię wcześniej, zanim zacząłem próbować go uruchomić. – user33061

1

Próbujesz uzyskać dostęp do 3 wymiarową tablicę z 4 De odniesień

Trzeba tylko 3 pętle zamiast 4 lub int myArray[10][10][10][10];

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

powinny być

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

Co zmienić? Oprócz problemu z tablicą 3 lub 4-wymiarową, powinieneś pozbyć się magicznych liczb (10 i 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

Na wszelki wypadek w przyszłości masz inną liczbę palców ;-) –

0

Myślę, że masz intialized 3d tablicy, ale próbujesz uzyskać dostęp do tablicy z 4 wymiaru.

+0

Moja rada przy udzielaniu odpowiedzi to próba wskazania konkretnych części oryginalnego kodu z pytania. W twoim przypadku oznaczałoby to włączenie '' 'int myArray [10] [10] [10],' '' dla 3-wymiarowego odniesienia tablicy i '' myArray [i] [t] [x] [y ] = i + t + x + y; '' 'dla odwołania do 4-wymiarowej tablicy thr. Czasami ludzie będą głosować, jeśli nie mają kontekstu, aby zrozumieć twoją odpowiedź. –