Hola! Soy un principiante en C y os quisiera preguntar para ver si me pudieres ayudar en este programa.
Lo que hago es definir la función llamada numeros, donde veo las posibilidades de realizar el sudoku ordenando los números de la manera respectiva, es decir, sin que se repitan numeros en cada fila o columna.
Hasta el momento llevo esto:
/*Sudokus*/
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int x,y,num[9][9], i, h, j, k;
void numeros () {
for (i=0; i<9; i++) {
for (h=0; h<9; h++) {
num[h]=(rand() % 9)+1;
numh: for (j=1; j<h+1; j++) {
if (num[h]==num[h-j]) {
num[h]=(rand() % 9)+1;
goto numh;
}
}
numi: for (k=1; k<i+1; k++) {
if (num[h]==num[i-k][h]) {
num[h]=(rand()%9)+1;
goto numi;
}
}
}
}
}
void main () {
clrscr ();
numeros();
for (j=0; j<9; j++) {
for (k=0; k<9; k++) {
printf ("%d ", num[j][k]);
}
}
getch();
}
Donde está verificando con perfección para que no se repitan números en las columnas, pero en las filas siempre tengo problemas y no sé por qué se dan. Gracias.
Lo que hago es definir la función llamada numeros, donde veo las posibilidades de realizar el sudoku ordenando los números de la manera respectiva, es decir, sin que se repitan numeros en cada fila o columna.
Hasta el momento llevo esto:
/*Sudokus*/
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int x,y,num[9][9], i, h, j, k;
void numeros () {
for (i=0; i<9; i++) {
for (h=0; h<9; h++) {
num[h]=(rand() % 9)+1;
numh: for (j=1; j<h+1; j++) {
if (num[h]==num[h-j]) {
num[h]=(rand() % 9)+1;
goto numh;
}
}
numi: for (k=1; k<i+1; k++) {
if (num[h]==num[i-k][h]) {
num[h]=(rand()%9)+1;
goto numi;
}
}
}
}
}
void main () {
clrscr ();
numeros();
for (j=0; j<9; j++) {
for (k=0; k<9; k++) {
printf ("%d ", num[j][k]);
}
}
getch();
}
Donde está verificando con perfección para que no se repitan números en las columnas, pero en las filas siempre tengo problemas y no sé por qué se dan. Gracias.