Cravenica
Cravenica

Reputation: 161

Working with Two-Dimensional Array in C++

I'm working with a two-dimensional array with 9 and 9 elements, grid[9][9], i need to check if specific elements are equal and if so to flag the 1st array for the second array.

bool gridWon(int n){
    if ( grid[n][0] != 0 && grid[n][0] == grid[n][1] && grid[n][0] == grid[n][2]){
        return true;
    } else if ( grid[n][3] != 0 && grid[n][3] == grid[n][4] && grid[n][5] == grid[n][3]){
        return true;
    } else if ( grid[n][6] != 0 && grid[n][6] == grid[n][7] && grid[n][8] == grid[n][6]){
        return true;
    } else if ( grid[n][0] != 0 && grid[n][0] == grid[n][4] && grid[n][8] == grid[n][0]){
        return true;
    } else if ( grid[n][2] != 0 && grid[n][2] == grid[n][4] && grid[n][6] == grid[n][2]){
        return true;
    } else if ( grid[n][0] != 0 && grid[n][0] == grid[n][3] && grid[n][6] == grid[n][0]){
        return true;
    } else if ( grid[n][1] != 0 && grid[n][1] == grid[n][4] && grid[n][7] == grid[n][1]){
        return true;
    } else if ( grid[n][2] != 0 && grid[n][2] == grid[n][5] && grid[n][8] == grid[n][2]){
        return true;
    } else
        return false;
}

How can I write this more elegant and how can I flag the grid[n][] in order to compare them later?

example:

if grid[1][] returns true then I need to know later to compare if grid[1][] == grid[2][] == true

Upvotes: 1

Views: 73

Answers (1)

tilin
tilin

Reputation: 332

can it be better to return the result of a logical operation:

bool gridWon(int n){
 return (grid[n][0] != 0 && grid[n][0] == grid[n][1] && grid[n][0] == grid[n][2]) ||
  (grid[n][3] != 0 && grid[n][3] == grid[n][4] && grid[n][5] == grid[n][3]) ||
  (grid[n][6] != 0 && grid[n][6] == grid[n][7] && grid[n][8] == grid[n][6]) ||
  (grid[n][0] != 0 && grid[n][0] == grid[n][4] && grid[n][8] == grid[n][0]) ||
  (grid[n][2] != 0 && grid[n][2] == grid[n][4] && grid[n][6] == grid[n][2]) ||
  (grid[n][0] != 0 && grid[n][0] == grid[n][3] && grid[n][6] == grid[n][0]) ||
  (grid[n][1] != 0 && grid[n][1] == grid[n][4] && grid[n][7] == grid[n][1]) ||
  (grid[n][2] != 0 && grid[n][2] == grid[n][5] && grid[n][8] == grid[n][2]);
}

Upvotes: 1

Related Questions