Alguém pode me ajudar ? Estou tendo dificuldades de fazer esse programa :
#include <stdio.h>
void leSudoku (int n, int sudoku [16] [16] )
{
char s[2];
int i, j, dim = n * n;
for (i=0; 0< dim; i++)
for (j=0; 0< dim; j++)
{
scanf("%s",&s);
if (s[0] >= '1' && s[0] <='9'){
sudoku[i][j] = s[0] - '0';}
if (s[0] >= 'A' && s[0] <= 'G'){
sudoku[i][j] = s[0] - 'A' + 10;}
}
}
void imprimeLinha (int n)
{
int i,j;
for (i=0; i < n; i++)
{
printf ("+");
for (j=0; j < n; j++)
printf ("---");
}
printf ("+\n");
}
void imprimeSudoku (int n, int sudoku [16][16])
{
int i, j, dim = n * n;
imprimeLinha(n);
for (i=0; i<dim; i++)
{
printf ("|");
for (j=0; j < dim; j++)
{
int num=sudoku [i][j];
if (num<=9)
{
printf ("%2d ",num);
}
else
{
printf ("%2c ",num - 10 + 'A');
}
if ((j+1)%n == 0)
{
printf ("|");
}
}
printf("\n");
if ((i+1)%n == 0)
{
imprimeLinha(n);
}
}
}
int sudokuOk (int n, int sudoku [16][16],int *lin,int *col)
{
//PARTE QUE FALTA COMPLETAR
return 1;
}
int main (void)
{
int n, nlin, ncol, ok;
int sudoku[16][16];
scanf ("%d", &n);
leSudoku(n,sudoku);
imprimeSudoku(n,sudoku);
ok = sudokuOk(n,sudoku,&nlin,&ncol);
if (ok)
{
puts ("Sudoku Ok!");
}
else
{
printf("Erro na posição (%d,%d)\n"), nlin, ncol;
}
return 0;
}
O enredo desse programa :
O seu trabalho é criar um programa que leia um valor n, n = {2, 3, 4}, que determina a dimensão de uma matriz quadrada n² × n² e em seguida leia n^4 valores que preenchem uma matriz quadrada que representa um jogo de sudoku resolvido. A matriz pode ser 4 x 4 (se n =2), 9 x 9 (se n = 3) ou 16 x 16 (se n = 4). Com a matriz carregada na memória, o seu programa deve avaliar se o preenchimento está correto ou não, indicando a primeira linha e coluna onde foi encontrado o erro (se houver), ou a mensagem ”Sudoku Ok!”. Para o jogo de Sudoku 16 x 16, considere as letras A, B, C, D, E, F e G para representar os dígitos 10, 11, 12, 13, 14, 15 e 16, respectivamente.
Minha dificuldade é que não sei como fazer o programa verificar se todas linhas e colunas estão corretas .