How would I fill a two-dimensional array up with numbers.
map_height = 9
map_width = 8

I have this code:

for (i=0; i<map_height; i++)
                {
                    
                    for (p=0; p<map_width; p++)
                    {
                        room_numbers[i][p] = w;
                        w++;
                        }
                    }

But when I try to print it out it comes up with wierd numbers I printed with:

for (int a=0; a<map_height; a++)
                {
                    for (int b=0; b<map_width; b++)
                    {
                        cout << room_numbers[a][b]<< " ";
                        }
                        cout << "\n";
                    }

Did you initialize w? What are the weird numbers that are printing out? Could you post more of the code?

> How would I fill a two-dimensional array up with numbers
Exactly the way you do it.
> But when I try to print it out it comes up with wierd numbers I printed with:
If you give us more context, we might spot a problem.

Thanks
I know it is pretty bad but i'm just re-learning from what I learnt last time I looked into C++.

class Map
{
      public:
             Map();
             ~Map();
             void Map::print();
      private:
                int i;
                int p;
                int w;
                int map_height;
                int map_width;
                int total_rooms;
                int room_numbers[0][0];
                string room_titles[0];
                string room_description[0];
                };
                
      Map::Map()
      {                
                map_height = 9;
                map_width = 8;
                total_rooms = map_width*map_height;
                room_numbers[map_height][map_width];
                room_titles[total_rooms];
                room_description[total_rooms];
                w = 0;
                for (i=0; i<map_height; i++)
                {
                    
                    for (p=0; p<map_width; p++)
                    {
                        room_numbers[i][p] = w;
                        w++;
                        }
                    } 
                }
                
      Map::~Map()
      {
                 }
                 
      void Map::print()
      {
      for (int a=0; a<map_height; a++)
                {
                    for (int b=0; b<map_width; b++)
                    {
                        cout << room_numbers[a][b]<< " ";
                        }
                        cout << "\n";
                    }

                } 
                         
int main()
{
    Map map;
    map.print();
    cin.get();
}

Numbers that come up are nine rows of: 64 65 66 67 68 69 70 71
Different map_width and map_height combos get different numbers.

Edited 6 Years Ago by happymadman: so I don't look like a complete fool

You're probably thinking that you're resizing array's here:

int room_numbers[0][0];
string room_titles[0];
string room_description[0];
[....]
                total_rooms = map_width*map_height;
                room_numbers[map_height][map_width];
                room_titles[total_rooms];
                room_description[total_rooms];

But you're not. If you want to use dynamically resizable arrays, you need to do it with new and delete or better yet: use std::maps or nested std::vectors

YEah I thought that might be it.
is there any way to make those map_width and map_height variables into constants under the private: thing?

Thanks

Edited 6 Years Ago by happymadman: n/a

YEah I thought that might be it.
is there any way to make those map_width and map_height variables into constants under the private: thing?

Thanks

Sure, you can have constants in a class like so:

static const int width = 100;

Or if you just want some numbers to put into the array you could also do something like this:

enum { width = 100 };

Both work fine.

Oh, That is exactly what I wanted.
All I needed to do was add add static twice to my original code.
Probaly should have given you that code first rather then my "fixed" one
Thanks a heap-a-lot.

Edited 6 Years Ago by happymadman: n/a

This question has already been answered. Start a new discussion instead.