Controleren of een nummer in dezelfde rij of kolom bestaat

Ik staar al een paar uur naar deze code, probeerde een walkthrough, debugging met autos en breekpunten en het is tot nu toe geen oplossing. Maybie iemands frisse look zou me helpen;).

#include 

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<

De functiecontrole (kolom, rij, waarde) is ontworpen om 0 te retourneren wanneer het getal minstens eenmaal voorkomt in de tweedimensionale tabel "matrix". Dit programma is een stuk sudoku-oplosser.

0
Kun je uitbreiden wat je probeert te doen? Probeert u te controleren of hetzelfde nummer meerdere keren in dezelfde kolom/rij voorkomt. Als je naar je code kijkt, lijkt het erop dat je misschien een Sudoku-oplosser aan het schrijven bent, maar het is slechts een gok op dit moment.
toegevoegd de auteur JPvdMerwe, de bron

1 antwoord

U hebt de indices in de if -instructies gemengd. Ze zouden moeten zijn:

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

en

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

The reason is that the first dimension is the row. You can check this by printing matrix[2][0].
For your matrix, you will get 2 (en not 6).

3
toegevoegd