2012-06-24 2 views
0

Я смотрел на этот код в течение нескольких часов, пробовал прохождение игры, отлаживал авто и точки останова, и пока это не решение. Мейби, чей-то свежий взгляд поможет мне;).Проверка наличия числа в той же строке или столбце

#include <iostream> 

using namespace std; 

int matrix[9][9] = {{0, 0, 6, 0, 0, 0, 1, 0, 5}, 
        {0, 4, 0, 7, 0, 6, 0, 3, 9}, 
        {2, 0, 0, 9, 3, 0, 6, 0, 0}, 
        {7, 0, 0, 1, 8, 0, 5, 0, 4}, 
        {0, 0, 4, 0, 6, 0, 9, 0, 0}, 
        {1, 0, 9, 0, 5, 2, 0, 0, 3}, 
        {0, 0, 1, 0, 9, 3, 0, 0, 7}, 
        {6, 7, 0, 5, 0, 8, 0, 9, 0}, 
        {9, 0, 8, 0, 0, 0, 4, 0, 0}}; 


bool check(int column ,int row,int checkedValue) 
{ 
    //column check 
    for(int i=0; i<9; i++) 
    {  
     if(i==row)continue; 

     if(checkedValue==matrix[column][i]) return false; 
    } 
    //row check 
    for(int i=0; i<9; i++) 
    { 
     if(i==column) continue; 
     if(checkedValue==matrix[i][row]) return false; 
    }      
     return true; 
} 



int main() 
{ 
    cout<<check(4,0,4); //Why does it output 0? There is no "4" in the 5th column and the 1st row. 

    system("pause"); 
    return 0; 
} 

Проверка функции (колонок, строка, значение) был разработан, чтобы возвращать 0, когда число происходит по крайней мере, один раз в «матрице» двумерный таблице. Эта программа является куском решателя судоку.

+2

Можете вы рассказать о том, что вы пытаетесь сделать? Вы пытаетесь проверить, отображается ли один и тот же номер в одном столбце/строке более одного раза. Глядя на ваш код, похоже, вы можете написать решателя Sudoku, но это всего лишь догадка в данный момент. – JPvdMerwe

ответ

3

Вы смешали индексы в операциях if. Они должны быть:

if(checkedValue==matrix[i][column]) return false; // not matrix[column][i] 

и

if(checkedValue==matrix[row][i]) return false; // not matrix[i][row] 

Причина заключается в том, что первое измерение является строка. Вы можете проверить это, распечатав matrix[2][0].
Для вашей матрицы вы получите 2 (а не 6).

Смежные вопросы