Reputation: 161
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
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