#include
#include
using namespace std;
int main()
{
int nivel;
int valores[9][9];
int i,j;
int vertical, horizontal;
int temp;
printf("Bienvenido al Sudoko 1.0\n");
printf("------------------------\n");
printf("\nElige el nivel de dificulatad (0,1 o 2): ");
scanf ("%d",&nivel);
for ( i=0; i<9 ; i++ ) {
for ( j=0; j<9 ; j++ ){
valores[i][j]=0;
}
}
if ( nivel > 2 )
{
system("cls") ;
main();
}
else
{
if ( nivel == 0 ){
valores[0][1]=4;
valores[0][3]=3;
valores[0][7]=8;
valores[1][5]=8;
valores[1][8]=3;
valores[2][1]=8;
valores[2][4]=6;
valores[2][5]=2;
valores[2][6]=4;
valores[2][7]=1;
valores[2][8]=9;
valores[3][1]=1;
valores[3][2]=4;
valores[3][4]=3;
valores[3][6]=2;
valores[5][2]=3;
valores[5][4]=7;
valores[5][6]=8;
valores[5][7]=4;
valores[6][0]=7;
valores[6][1]=3;
valores[6][2]=6;
valores[6][3]=2;
valores[6][4]=4;
valores[6][7]=5;
valores[7][0]=8;
valores[7][3]=7;
valores[8][1]=5;
valores[8][5]=1;
valores[8][7]=9;
do{
printf("\n\n|---|---|---|---|---|---|---|---|---|\n");
printf("| %d %d %d | %d %d %d | %d %d %d |\n",valores[0][0],valores[0][1],valores[0][2],valores[0][3],valores[0][4],valores[0][5],valores[0][6],valores[0][7],valores[0][8]);
printf("| %d %d %d | %d %d %d | %d %d %d |\n",valores[1][0],valores[1][1],valores[1][2],valores[1][3],valores[1][4],valores[1][5],valores[1][6],valores[1][7],valores[1][8]);
printf("| %d %d %d | %d %d %d | %d %d %d |\n",valores[2][0],valores[2][1],valores[2][2],valores[2][3],valores[2][4],valores[2][5],valores[2][6],valores[2][7],valores[2][8]);
printf("|---|---|---|---|---|---|---|---|---|\n");
printf("| %d %d %d | %d %d %d | %d %d %d |\n",valores[3][0],valores[3][1],valores[3][2],valores[3][3],valores[3][4],valores[3][5],valores[3][6],valores[3][7],valores[3][8]);
printf("| %d %d %d | %d %d %d | %d %d %d |\n",valores[4][0],valores[4][1],valores[4][2],valores[4][3],valores[4][4],valores[4][5],valores[4][6],valores[4][7],valores[4][8]);
printf("| %d %d %d | %d %d %d | %d %d %d |\n",valores[5][0],valores[5][1],valores[5][2],valores[5][3],valores[5][4],valores[5][5],valores[5][6],valores[5][7],valores[5][8]);
printf("|---|---|---|---|---|---|---|---|---|\n");
printf("| %d %d %d | %d %d %d | %d %d %d |\n",valores[6][0],valores[6][1],valores[6][2],valores[6][3],valores[6][4],valores[6][5],valores[6][6],valores[6][7],valores[6][8]);
printf("| %d %d %d | %d %d %d | %d %d %d |\n",valores[7][0],valores[7][1],valores[7][2],valores[7][3],valores[7][4],valores[7][5],valores[7][6],valores[7][7],valores[7][8]);
printf("| %d %d %d | %d %d %d | %d %d %d |\n",valores[8][0],valores[8][1],valores[8][2],valores[8][3],valores[8][4],valores[8][5],valores[8][6],valores[8][7],valores[8][8]);
printf("|---|---|---|---|---|---|---|---|---|\n\n");
printf("Escoge una cordenada ( 1 al 9 )\n");
printf("\nCordenada horizontal: ");
scanf ("%d",&horizontal);
printf("\nCordenada vertizal: ");
scanf ("%d",&vertical);
if ( valores [horizontal-1][vertical-1] != 0 ){
printf ("\nEste valor ya es correcto\n");
system("PAUSE");}
else {
printf("\nInserte el valor ( para terminar el sudoku pulse 0 ) : ");
scanf ("%d",&temp);
if ( temp < 10 ){
//algoritmo para comprobar que el numero sea correcto
if ( horizontal==1 || horizontal==4 || horizontal==7 ){
if ( vertical==1 || vertical==4 || vertical==7 ){
if ( temp != valores [horizontal+1][vertical] && temp != valores [horizontal+2][vertical] && temp != valores [horizontal+1][vertical] && temp != valores [horizontal+1][vertical+1] && temp != valores [horizontal+1][vertical+2] && temp != valores [horizontal+2][vertical] && temp != valores [horizontal+2][vertical+1] && temp != valores [horizontal+2][vertical+2] ){
if ( temp != valores [horizontal][vertical+8] && temp != valores [horizontal][vertical+1] && temp != valores [horizontal][vertical+2] && temp != valores [horizontal][vertical+3] && temp != valores [horizontal][vertical+4] && temp != valores [horizontal][vertical+5] && temp != valores [horizontal][vertical+6] && temp != valores [horizontal][vertical+7] ){
if ( temp != valores [horizontal+1][vertical] && temp != valores [horizontal+2][vertical] && temp != valores [horizontal+3][vertical] && temp != valores [horizontal+4][vertical] && temp != valores [horizontal+5][vertical] && temp != valores [horizontal+6][vertical] && temp != valores [horizontal+7][vertical] && temp != valores [horizontal+8][vertical] ){
valores [horizontal-1][vertical-1] = temp;}
else{
printf("\nValor incorrecto, por favor introduce un valor entre 1 y 9. \n");
system("PAUSE");
}
}
}
}
if ( vertical==2 || vertical==5 || vertical==8 ){
if ( temp != valores [horizontal][vertical-1] && temp != valores [horizontal+1][vertical-1] && temp != valores [horizontal+2][vertical-1] && temp != valores [horizontal+1][vertical] && temp != valores [horizontal+2][vertical] && temp != valores [horizontal][vertical+1] && temp != valores [horizontal+1][vertical+1] && temp != valores [horizontal+1][vertical+2] ){
if ( temp != valores [horizontal][vertical+8] && temp != valores [horizontal][vertical+1] && temp != valores [horizontal][vertical+2] && temp != valores [horizontal][vertical+3] && temp != valores [horizontal][vertical+4] && temp != valores [horizontal][vertical+5] && temp != valores [horizontal][vertical+6] && temp != valores [horizontal][vertical+7] ){
if ( temp != valores [horizontal+1][vertical] && temp != valores [horizontal+2][vertical] && temp != valores [horizontal+3][vertical] && temp != valores [horizontal+4][vertical] && temp != valores [horizontal+5][vertical] && temp != valores [horizontal+6][vertical] && temp != valores [horizontal+7][vertical] && temp != valores [horizontal+8][vertical] ){
valores [horizontal-1][vertical-1] = temp;}
else{
printf("\nValor incorrecto, por favor introduce un valor entre 1 y 9. \n");
system("PAUSE");
}
}
}
}
if ( vertical==3 || vertical==6 || vertical==9 ){
if ( temp != valores [horizontal+1][vertical] && temp != valores [horizontal+2][vertical] && temp != valores [horizontal][vertical-1] && temp != valores [horizontal+1][vertical-1] && temp != valores [horizontal+2][vertical-1] && temp != valores [horizontal][vertical-2] && temp != valores [horizontal+1][vertical-2] && temp != valores [horizontal+2][vertical-2] ){
if ( temp != valores [horizontal][vertical+8] && temp != valores [horizontal][vertical+1] && temp != valores [horizontal][vertical+2] && temp != valores [horizontal][vertical+3] && temp != valores [horizontal][vertical+4] && temp != valores [horizontal][vertical+5] && temp != valores [horizontal][vertical+6] && temp != valores [horizontal][vertical+7] ){
if ( temp != valores [horizontal+1][vertical] && temp != valores [horizontal+2][vertical] && temp != valores [horizontal+3][vertical] && temp != valores [horizontal+4][vertical] && temp != valores [horizontal+5][vertical] && temp != valores [horizontal+6][vertical] && temp != valores [horizontal+7][vertical] && temp != valores [horizontal+8][vertical] ){
valores [horizontal-1][vertical-1] = temp;}
else{
printf("\nValor incorrecto, por favor introduce un valor entre 1 y 9. \n");
system("PAUSE");
}
}
}
}
}
if ( horizontal==2 || horizontal==5 || horizontal==8 ){
if ( vertical==1 || vertical==4 || vertical==7 ){
if ( temp != valores [horizontal+1][vertical] && temp != valores [horizontal+2][vertical] && temp != valores [horizontal+1][vertical] && temp != valores [horizontal+1][vertical+1] && temp != valores [horizontal+1][vertical+2] && temp != valores [horizontal-1][vertical] && temp != valores [horizontal-1][vertical+1] && temp != valores [horizontal-1][vertical+2] ){
if ( temp != valores [horizontal][vertical+8] && temp != valores [horizontal][vertical+1] && temp != valores [horizontal][vertical+2] && temp != valores [horizontal][vertical+3] && temp != valores [horizontal][vertical+4] && temp != valores [horizontal][vertical+5] && temp != valores [horizontal][vertical+6] && temp != valores [horizontal][vertical+7] ){
if ( temp != valores [horizontal+1][vertical] && temp != valores [horizontal+2][vertical] && temp != valores [horizontal+3][vertical] && temp != valores [horizontal+4][vertical] && temp != valores [horizontal+5][vertical] && temp != valores [horizontal+6][vertical] && temp != valores [horizontal+7][vertical] && temp != valores [horizontal+8][vertical] ){
valores [horizontal-1][vertical-1] = temp;}
else{
printf("\nValor incorrecto, por favor introduce un valor entre 1 y 9. \n");
system("PAUSE");
}
}
}
}
if ( vertical==2 || vertical==5 || vertical==8 ){
if ( temp != valores [horizontal][vertical-1] && temp != valores [horizontal+1][vertical-1] && temp != valores [horizontal+2][vertical-1] && temp != valores [horizontal+1][vertical] && temp != valores [horizontal-1][vertical] && temp != valores [horizontal][vertical+1] && temp != valores [horizontal+1][vertical+1] && temp != valores [horizontal+1][vertical+2] ){
if ( temp != valores [horizontal][vertical+8] && temp != valores [horizontal][vertical+1] && temp != valores [horizontal][vertical+2] && temp != valores [horizontal][vertical+3] && temp != valores [horizontal][vertical+4] && temp != valores [horizontal][vertical+5] && temp != valores [horizontal][vertical+6] && temp != valores [horizontal][vertical+7] ){
if ( temp != valores [horizontal+1][vertical] && temp != valores [horizontal+2][vertical] && temp != valores [horizontal+3][vertical] && temp != valores [horizontal+4][vertical] && temp != valores [horizontal+5][vertical] && temp != valores [horizontal+6][vertical] && temp != valores [horizontal+7][vertical] && temp != valores [horizontal+8][vertical] ){
valores [horizontal-1][vertical-1] = temp;}
else{
printf("\nValor incorrecto, por favor introduce un valor entre 1 y 9. \n");
system("PAUSE");
}
}
}
}
if ( vertical==3 || vertical==6 || vertical==9 ){
if ( temp != valores [horizontal+1][vertical] && temp != valores [horizontal-1][vertical] && temp != valores [horizontal][vertical-1] && temp != valores [horizontal+1][vertical-1] && temp != valores [horizontal-1][vertical-1] && temp != valores [horizontal][vertical-2] && temp != valores [horizontal+1][vertical-2] && temp != valores [horizontal-1][vertical-2] ){
if ( temp != valores [horizontal][vertical+8] && temp != valores [horizontal][vertical+1] && temp != valores [horizontal][vertical+2] && temp != valores [horizontal][vertical+3] && temp != valores [horizontal][vertical+4] && temp != valores [horizontal][vertical+5] && temp != valores [horizontal][vertical+6] && temp != valores [horizontal][vertical+7] ){
if ( temp != valores [horizontal+1][vertical] && temp != valores [horizontal+2][vertical] && temp != valores [horizontal+3][vertical] && temp != valores [horizontal+4][vertical] && temp != valores [horizontal+5][vertical] && temp != valores [horizontal+6][vertical] && temp != valores [horizontal+7][vertical] && temp != valores [horizontal+8][vertical] ){
valores [horizontal-1][vertical-1] = temp;}
else{
printf("\nValor incorrecto, por favor introduce un valor entre 1 y 9. \n");
system("PAUSE");
}
}
}
}
}
if ( horizontal==3 || horizontal==6 || horizontal==9 ){
if ( vertical==1 || vertical==4 || vertical==7 ){
if ( temp != valores [horizontal+1][vertical] && temp != valores [horizontal+2][vertical] && temp != valores [horizontal+1][vertical] && temp != valores [horizontal+1][vertical+1] && temp != valores [horizontal+1][vertical+2] && temp != valores [horizontal+2][vertical] && temp != valores [horizontal+2][vertical+1] && temp != valores [horizontal+2][vertical+2] ){
if ( temp != valores [horizontal][vertical+8] && temp != valores [horizontal][vertical+1] && temp != valores [horizontal][vertical+2] && temp != valores [horizontal][vertical+3] && temp != valores [horizontal][vertical+4] && temp != valores [horizontal][vertical+5] && temp != valores [horizontal][vertical+6] && temp != valores [horizontal][vertical+7] ){
if ( temp != valores [horizontal+1][vertical] && temp != valores [horizontal+2][vertical] && temp != valores [horizontal+3][vertical] && temp != valores [horizontal+4][vertical] && temp != valores [horizontal+5][vertical] && temp != valores [horizontal+6][vertical] && temp != valores [horizontal+7][vertical] && temp != valores [horizontal+8][vertical] ){
valores [horizontal-1][vertical-1] = temp;}
else{
printf("\nValor incorrecto, por favor introduce un valor entre 1 y 9. \n");
system("PAUSE");
}
}
}
}
if ( vertical==2 || vertical==5 || vertical==8 ){
if ( temp != valores [horizontal][vertical-1] && temp != valores [horizontal+1][vertical-1] && temp != valores [horizontal+2][vertical-1] && temp != valores [horizontal+1][vertical] && temp != valores [horizontal+2][vertical] && temp != valores [horizontal][vertical+1] && temp != valores [horizontal+1][vertical+1] && temp != valores [horizontal+1][vertical+2] ){
if ( temp != valores [horizontal][vertical+8] && temp != valores [horizontal][vertical+1] && temp != valores [horizontal][vertical+2] && temp != valores [horizontal][vertical+3] && temp != valores [horizontal][vertical+4] && temp != valores [horizontal][vertical+5] && temp != valores [horizontal][vertical+6] && temp != valores [horizontal][vertical+7] ){
if ( temp != valores [horizontal+1][vertical] && temp != valores [horizontal+2][vertical] && temp != valores [horizontal+3][vertical] && temp != valores [horizontal+4][vertical] && temp != valores [horizontal+5][vertical] && temp != valores [horizontal+6][vertical] && temp != valores [horizontal+7][vertical] && temp != valores [horizontal+8][vertical] ){
valores [horizontal-1][vertical-1] = temp;}
else{
printf("\nValor incorrecto, por favor introduce un valor entre 1 y 9. \n");
system("PAUSE");
}
}
}
}
if ( vertical==3 || vertical==6 || vertical==9 ){
if ( temp != valores [horizontal+1][vertical] && temp != valores [horizontal-1][vertical] && temp != valores [horizontal][vertical-1] && temp != valores [horizontal+1][vertical-1] && temp != valores [horizontal-1][vertical-1] && temp != valores [horizontal][vertical-2] && temp != valores [horizontal+1][vertical-2] && temp != valores [horizontal-1][vertical-2] ){
if ( temp != valores [horizontal][vertical+8] && temp != valores [horizontal][vertical+1] && temp != valores [horizontal][vertical+2] && temp != valores [horizontal][vertical+3] && temp != valores [horizontal][vertical+4] && temp != valores [horizontal][vertical+5] && temp != valores [horizontal][vertical+6] && temp != valores [horizontal][vertical+7] ){
if ( temp != valores [horizontal+1][vertical] && temp != valores [horizontal+2][vertical] && temp != valores [horizontal+3][vertical] && temp != valores [horizontal+4][vertical] && temp != valores [horizontal+5][vertical] && temp != valores [horizontal+6][vertical] && temp != valores [horizontal+7][vertical] && temp != valores [horizontal+8][vertical] ){
valores [horizontal-1][vertical-1] = temp;}
else{
printf("\nValor incorrecto, por favor introduce un valor entre 1 y 9. \n");
system("PAUSE");
}
}
}
}
}
}
//valores [horizontal-1][vertical-1] = temp;}
/* else{
printf("\nValor incorrecto, por favor introduce un valor entre 1 y 9. \n");
system("PAUSE");}
}*/
}
}while ( temp != 0 );
}
if ( nivel == 1 ){
}
if ( nivel == 2 ){
}
}
system("PAUSE");
return EXIT_SUCCESS;
}