1

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

2
  • Use a loop maybe? Commented Nov 4, 2017 at 7:28
  • Write a function that takes the array indexes, so you can do if (check_cells(grid[n], 3, 4, 5)) Commented Nov 4, 2017 at 7:29

1 Answer 1

1

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]);
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.