Je suis un novice en C++ et j'essaie de créer un simple tableau à 3 dimensions statique, puis de l'imprimer dans la console.
Voici mon code actuel:
#include <iostream>
using namespace std;
int main()
{
const int MAX_ROW = 2;
const int MAX_COL = 2;
const int MAX_HEIGHT = 2;
int MyArray[MAX_ROW][MAX_COL][MAX_HEIGHT] = { {1,1},
{2,10},
{3,15},
{4,20},
{5,25},
{6,30},
{7,35},
{8,40} };
for(int Row = 0; Row < MAX_ROW; ++Row)
{
for(int Col =0; Col < MAX_COL; ++Col)
{
for(int Height = 0; Height < MAX_HEIGHT; ++Height)
{
cout << "Integer["<< Row << "][" << Col << "][" << Height << "] = " << MyArray[MAX_ROW][MAX_COL][MAX_HEIGHT] << endl;
}
}
}
return 0;
}
Quand je compile le compilateur me notifie en indiquant "error: too many initializers for ‘int [2][2][2]"
D'autres questions ont utilisé des pointeurs que je ne suis pas familier.
Merci d'avance!
Edit: La syntaxe est fausse, je l’ai donc corrigée avec le code correspondant, comme indiqué ci-dessous. Désormais, dans la sortie du programme, chaque espace de tableau correspond à 32767. Un espace entier complet au lieu des valeurs attribuées. Quelqu'un peut-il répondre à cela dans leur réponse? Je n'ai pas changé de code, sauf mon initialisation du tableau.
Changer le code comme suit. Vous pouvez voir qu'il y a 2 groupes contenant deux n-uplets ayant chacun deux éléments.
int MyArray[MAX_ROW][MAX_COL][MAX_HEIGHT] = {
{ {1,1},{2,10} },
{ {4,20},{5,25} }
};
Regardez dans l'exemple suivant pour le rendre plus clair
int arr[2][3][4] = {
{ {1, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4} },
{ {1, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4} }
};
Comme vous pouvez le constater, il y a deux groupes, chacun contenant trois groupes de 4 nombres.
Votre syntaxe est fausse.
int a[2][2][3] = { // Initialize entire variable
{ // 1 of 2 (leftmost array)
{ 1, 2, 3 }, // 1 of 2 (inner array)
{ 4, 5, 6 }, // 2 of 2 (inner array)
},
{ // 2 of 2 (leftmost array)
{ 7, 8, 9 }, // 1 of 2 (inner array)
{ 10, 11, 12 }, // 2 of 2 (inner array)
},
}
Ce que vous avez montré serait un int [8][2]
.
Mis à part l'initialisation incorrecte des tableaux, comme d'autres l'ont fait remarquer, vous avez également une erreur d'impression. Vous imprimez toujours le même élément qui n'existe même pas (comportement indéfini).
cout << "Integer["<< Row << "][" << Col << "][" << Height << "] = " << MyArray[Row][Col][Height] << endl;
Vous déclarez un tableau 2x2x2, mais en le définissant comme un tableau 2x8.
De plus, lorsque vous imprimez le contenu de votre tableau, vous utilisez MAX_ * comme index au lieu de vos variables de boucle.
#include <iostream>
int main()
{
const int MAX_ROW = 2;
const int MAX_COL = 2;
const int MAX_HEIGHT = 2;
int MyArray[MAX_ROW][MAX_COL][MAX_HEIGHT] = {
{
{1,1}, {1,-1}
},
{
{2,10}, {2,-10}
}
};
for(int Row = 0; Row < MAX_ROW; ++Row)
for(int Col =0; Col < MAX_COL; ++Col)
for(int Height = 0; Height < MAX_HEIGHT; ++Height)
std::cout << "Integer["<< Row << "][" << Col << "][" << Height << "] = " << MyArray[MAX_ROW][MAX_COL][MAX_HEIGHT] << std::endl;
return 0;
}
votre tableau MyArray[MAX_ROW][MAX_COL][MAX_HEIGHT]
seul peut contenir 2 * 2 * 2 = 8 éléments, mais
{ {1,1},
{2,10},
{3,15},
{4,20},
{5,25},
{6,30},
{7,35},
{8,40} };
a 16 éléments . il y a donc trop d'initialisateurs