Saludos cesar_casla muchas gracias aqui mi codigo, le dividi en dos pq era muy grande
Código C:
Ver original#include<stdio.h>
#include<stdlib.h>
#include <time.h>
#define ALTO 9
#define ANCHO 9
int fila,columna,numero;
int sudokuceros[ALTO][ANCHO]={
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0},
};
int sudokus1[ALTO][ANCHO]={
{0, 2, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 6, 0, 0, 0, 0, 3},
{0, 7, 4, 0, 8, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 3, 0, 0, 2},
{0, 8, 0, 0, 4, 0, 0, 1, 0},
{6, 0, 0, 5, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 7, 8, 0},
{5, 0, 0, 0, 0, 9, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 4, 0},
};
int matriz[ALTO][ANCHO];
void cargarsudokus(int matriz[ALTO][ANCHO]);
void submenu1 (int opcion1);
void metenumeros(int matriz[ALTO][ANCHO]);
void DaValoresMatriz(int matriz[ALTO][ANCHO]);
void imprimirmatriz(int matriz[ALTO][ANCHO]);
void jugar_sudoku(int num1,int num2);
void escribir(int matriz[ALTO][ANCHO],int fila, int columna, int numero);
void dibujar_tablero(int matriz[ALTO][ANCHO]);
void juego(int matriz[ALTO][ANCHO]);
int finalizar(int matriz[ALTO][ANCHO]);
int intenta_poner(int matriz[ALTO][ANCHO],int i,int j,int k);
int coordenadavalida(int linea, int columna);
int comprobar(int matriz[ALTO][ANCHO], int fila, int columna, int numero);
int numerovalido(int numero);
void practicar_sudoku(int matriz[ALTO][ANCHO]);
void metenumeros_();
void juego_();
void llamararchivo ();
/* Declaracion de la función main */
int main () {
/* Declaración de variables */
//int matriz[ALTO][ANCHO];
int opcion = -1;
int variable = 0;
int opcion1 = -1;
/* Declaracion del While */
while((opcion!=0)&&(variable<4)) /*la sentencia se ejecutara mientras la condición sea cierta
o sea mientras la variable no sea mayor que 10 se mantiene el bucler */
{
printf (" ***********************************\n"); printf (" ***********************************\n");
/*Menu del Sudoku*/
printf(" Introduzca una operacion a realizar: \n"); printf(" 1) Crear Sudoku \n"); printf(" 2) Practicar Sudoku \n"); printf(" 3) Guardar Sudoku \n"); printf(" ===================================== \n"); printf(" Pulse 0 para salir \n");
if(opcion==1)
{
submenu1 (opcion1);
}
else if (opcion==2)
{
practicar_sudoku(matriz);
}
else if(opcion==3)
{
}
else if (opcion == 0)
{
printf ("\nSeleccion salida\n"); }
else
{
printf("\nLa opcion es incorrecta\n"); }
} variable ++; /* Fin funcion While, se incrementa en uno el valor de la variable --> variable = variable + 1 */
return 0;
}/*Fin funcion Main */
void submenu1 (int opcion1)
{
int matriz[ALTO][ANCHO];
int opsudokus;
while(opcion1!=0)
{
printf ("\n ***********************************\n"); printf ("\n * CREAR SUDOKU *\n"); printf ("\n ***********************************\n"); printf("\n Elija opciones para crear sudoku \n"); printf("\n 1) Cargar Sudoku\n"); printf("\n 2) Cargar Sudoku desde fichero\n"); printf("\n 3) Crear Sudoku\n"); printf("\n =====================================\n"); printf("\n Pulse 0 para volver al menu principal \n");
if(opcion1==1)
{
cargarsudokus(matriz);
}
else if(opcion1==2)
{
llamararchivo ();
}
else if(opcion1==3)
{
int op = -1;
while(finalizar(sudokuceros)!=0){
dibujar_tablero(sudokuceros);
metenumeros(sudokuceros);
printf("Desea seguir introduciendo valores al sudoku? (1)Si (2) No: "); if(op==1)
{
}
else
{
printf("Validando su sudoku:OK\n"); printf("-->>Regresando al menu<<--\n"); main();
}
finalizar(sudokuceros);
}
}
else
{
printf("\nOpcion salida de la opcion crear sudoku\n"); }
}
}