Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Simple 3D Array C++

Tags:

c++

arrays

I am a novice in C++ and I am trying to create a simple static 3 Dimensional Array and then print it out in console.

Here is my current code:

#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;
}

When I compile the compiler notifies me stating "error: too many initializers for ‘int [2][2][2]"

Other questions have used pointers which I am not familiar with.

Thank you in advance!

Edit: The syntax is wrong so I have corrected it with the correct corresponding code as answered below. Now in the output of the program each array space is 32767. A full integer space instead of the assigned values. Can anybody address this in their answer? I have not changed any code except my initialisation of the array.

like image 766
JOG-Design Avatar asked Oct 10 '13 07:10

JOG-Design


2 Answers

Your syntax is wrong.

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)
  },
}

What you've shown would be an int [8][2].

like image 67
Jonathon Reinhart Avatar answered Sep 21 '22 17:09

Jonathon Reinhart


Change the code as per following. You can see there are 2 groups containing two tuples each having two elements in it.

 int MyArray[MAX_ROW][MAX_COL][MAX_HEIGHT] = { 
                                               { {1,1},{2,10} }, 
                                               { {4,20},{5,25} } 
                                             };

Have a look in following example to make it more clear

  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} } 
                     };

As you can see, there are two groups, each containing three groups of 4 numbers.

like image 32
Vallabh Patade Avatar answered Sep 19 '22 17:09

Vallabh Patade