Porównaj ceny domen i usług IT, sprzedawców z całego świata

nieprawidłowe typy „int [int]” dla indeksu tablicy


Ten kod wyrzuca błąd kompilacji podany w tytule, czy ktoś może mi powiedzieć, co należy zmienić?
#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");}

z góry dziękuję
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Subskrybujesz tablicę 3D
myArray [10] [10] [10]
cztery razy
myArray [i] [t] [x] [y]
. Prawdopodobnie będziesz musiał dodać jeszcze jeden wymiar do swojej tablicy. Weź również pod uwagę pojemnik taki jak

Boost.MultiArray
http://www.boost.org/doc/libs/ ... .html
chociaż w tej chwili prawdopodobnie jest nad twoją głową.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Co zmienić? Oprócz problemu z tablicą 3 lub 4 wymiarową, musisz 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){
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

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

Powinien być
int myArray[10][10][10][10];
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Próbujesz uzyskać dostęp do trójwymiarowej tablicy z czterema odwołaniami
Potrzebujesz tylko 3 pętli zamiast 4 lub
int myArray [10] [10] [10] [10];
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Myślę, że zainicjowałeś tablicę 3D, ale próbujesz uzyskać dostęp do tablicy 4-wymiarowej.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Tylko ze względu na kompletność, ten błąd może wystąpić w innej sytuacji: kiedy deklarujesz tablicę w zakresie zewnętrznym, ale deklarujesz inną zmienną o tej samej nazwie w zakresie wewnętrznym, cieniując tablicę. Następnie, gdy próbujesz indeksować tablicę, w rzeczywistości uzyskujesz dostęp do zmiennej w zakresie wewnętrznym, która może nawet nie być tablicą lub może to być tablica o mniejszych wymiarach.
Przykład:
int a[10];// a global scopevoid f(int a)// a declared in local scope, overshadows a in global scope
{
printf("%d", a[0]);// you trying to access the array a, but actually addressing local argument a
}

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się