2008-12-12 31 views
5

Mã này ném lên các lỗi biên dịch được đưa ra trong tiêu đề, bất cứ ai có thể cho tôi biết những gì để thay đổi?không hợp lệ các loại 'int [int]' cho mảng chỉ số

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

} 

cảm ơn trước

Trả lời

11

Bạn đang subscripting một mảng ba chiều myArray[10][10][10] gấp bốn lần myArray[i][t][x][y]. Bạn có thể sẽ cần thêm một thứ nguyên khác vào mảng của bạn. Cũng xem xét một container như Boost.MultiArray, mặc dù đó có thể là trên đầu của bạn vào thời điểm này.

+0

làm ơn, tôi phải vô tình xóa dòng đó trước đó trước khi tôi bắt đầu cố gắng chạy nó. – user33061

1

Bạn đang cố gắng truy cập vào một mảng 3 chiều với 4 de-tài liệu tham khảo

Bạn chỉ cần 3 vòng thay vì 4, hoặc int myArray[10][10][10][10];

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

nên

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

Điều gì cần thay đổi? Ngoài vấn đề mảng 3 hoặc 4 chiều, bạn nên loại bỏ các số ma thuật (10 và 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

Chỉ trong trường hợp trong tương lai bạn có một số ngón tay khác ;-) –

0

Tôi nghĩ rằng bạn đã intialized một mảng 3d nhưng bạn đang cố gắng truy cập một mảng có 4 chiều.

+0

Lời khuyên của tôi khi đưa ra câu trả lời là thử và trỏ đến các phần cụ thể của mã gốc từ câu hỏi. Trong trường hợp của bạn, nó có nghĩa là bao gồm '' 'int myArray [10] [10] [10];' '' cho tham chiếu mảng 3 chiều và '' 'myArray [i] [t] [x] [y ] = i + t + x + y; '' 'cho tham chiếu mảng thứ 4. Đôi khi mọi người sẽ downvote nếu họ không có một bối cảnh để hiểu câu trả lời của bạn. –

Các vấn đề liên quan