I'm working on a program where you find any path through a graph. When inputting the graph using an array, I found the number in position[0][8][9] gets set as 1 rather than 0 after position[0][9][1] is read in to memory.

I've tried both gcc 3.3.2 and 4.0, and get the same result on both. Does anyone else get the same results?

#include <iostream>

using namespace std;

typedef char board[4][9][9];
board maze; //maze is global so we don't have to pass it in every recursive call.

int main()
  {
	cout << "Position [0][8][9] should be a 0.  It is a 1." << endl;
	//Enter just a simple 1-level maze
	maze[0][0][0] = '0';
	maze[0][0][1] = '0';
	maze[0][0][2] = '0';
	maze[0][0][3] = '0';
	maze[0][0][4] = '1';
	maze[0][0][5] = '1';
	maze[0][0][6] = '1';
	maze[0][0][7] = '1';
	maze[0][0][8] = '1';
	maze[0][0][9] = '1';
	
	maze[0][1][0] = '1';
	maze[0][1][1] = '1';
	maze[0][1][2] = '1';
	maze[0][1][3] = '0';
	maze[0][1][4] = '1';
	maze[0][1][5] = '1';
	maze[0][1][6] = '1';
	maze[0][1][7] = '1';
	maze[0][1][8] = '1';
	maze[0][1][9] = '1';
	
	maze[0][2][0] = '1';
	maze[0][2][1] = '1';
	maze[0][2][2] = '1';
	maze[0][2][3] = '0';
	maze[0][2][4] = '1';
	maze[0][2][5] = '1';
	maze[0][2][6] = '1';
	maze[0][2][7] = '1';
	maze[0][2][8] = '1';
	maze[0][2][9] = '1';
	
	maze[0][3][0] = '1';
	maze[0][3][1] = '0';
	maze[0][3][2] = '0';
	maze[0][3][3] = '0';
	maze[0][3][4] = '1';
	maze[0][3][5] = '0';
	maze[0][3][6] = '0';
	maze[0][3][7] = '0';
	maze[0][3][8] = '0';
	maze[0][3][9] = '1';
	
	maze[0][4][0] = '1';
	maze[0][4][1] = '0';
	maze[0][4][2] = '1';
	maze[0][4][3] = '1';
	maze[0][4][4] = '1';
	maze[0][4][5] = '0';
	maze[0][4][6] = '1';
	maze[0][4][7] = '1';
	maze[0][4][8] = '0';
	maze[0][4][9] = '1';
	
	maze[0][5][0] = '1';
	maze[0][5][1] = '0';
	maze[0][5][2] = '0';
	maze[0][5][3] = '0';
	maze[0][5][4] = '0';
	maze[0][5][5] = '0';
	maze[0][5][6] = '1';
	maze[0][5][7] = '0';
	maze[0][5][8] = '0';
	maze[0][5][9] = '1';
	
	maze[0][6][0] = '1';
	maze[0][6][1] = '0';
	maze[0][6][2] = '0';
	maze[0][6][3] = '0';
	maze[0][6][4] = '0';
	maze[0][6][5] = '1';
	maze[0][6][6] = '1';
	maze[0][6][7] = '0';
	maze[0][6][8] = '0';
	maze[0][6][9] = '1';
	
	maze[0][7][0] = '1';
	maze[0][7][1] = '0';
	maze[0][7][2] = '1';
	maze[0][7][3] = '1';
	maze[0][7][4] = '0';
	maze[0][7][5] = '1';
	maze[0][7][6] = '1';
	maze[0][7][7] = '0';
	maze[0][7][8] = '0';
	maze[0][7][9] = '1';
	
	maze[0][8][0] = '1';
	maze[0][8][1] = '0';
	maze[0][8][2] = '0';
	maze[0][8][3] = '0';
	maze[0][8][4] = '0';
	maze[0][8][5] = '1';
	maze[0][8][6] = '1';
	maze[0][8][7] = '0';
	maze[0][8][8] = '0';
	maze[0][8][9] = '0';
	
	maze[0][9][0] = '1';
	maze[0][9][1] = '1';
	maze[0][9][2] = '1';
	maze[0][9][3] = '1';
	maze[0][9][4] = '1';
	maze[0][9][5] = '1';
	maze[0][9][6] = '1';
	maze[0][9][7] = '1';
	maze[0][9][8] = '0';
	maze[0][9][9] = '0';
//Debug:  Print out the maze and wait for enter to be pressed
for (int i=0; i<=9; i++)
  {
	cout  << i << " ";
	for (int column=0; column<=9; column++)
	  cout << maze[0][i][column];
	cout << endl;
	}

	}

Arrays are zero-based. If you have T array[10] , it may be indexed from 0-9, not 0-10.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.