У меня есть функция для проверки, если массив имеет три одинаковых символа для массива крестики-нолики. Проблема в том, что у меня проблема с логикой:
for (int i = 0; i < SIZE; i++){
for (int j = 0; j < SIZE; j++){
if (board[i][j] != '*'){
if (i != j){
if (board[i][i] == board[i][j]){
matches++;
}
else if (board[i][j] == board[j][i]){
matches++;
}
else if (board[i][j] == board[j][j]){
matches++;
}
else if (board[i][j] == board[j][i]){
matches++;
}
else {
matches = 0;
}
}
}
}
}
Кажется, что я могу проверить по горизонтали и вертикали на совпадения. Но я не могу понять, как найти диагональные соответствия. Я думал, что этот код будет работать, а пока нет.
Любые предложения о том, что не так?
Похоже на домашнее задание, поэтому я не буду давать решение кода. Но вы можете сказать, когда вы находитесь на диагонали, когда оба индекса равны (i == j
) или когда индексы складываются на единицу меньше, чем размерность матрицы (i + j == SIZE - 1
.)
В первом случае вы находитесь на первой диагонали (слева направо и снизу справа). Во втором случае вы находитесь на второй диагонали (справа налево внизу).
Это работает для квадратных матриц любого размера.
Других решений пока нет …