Sudoku En C++

Páginas: 7 (1610 palabras) Publicado: 29 de diciembre de 2012
//REALIZADO POR: Andrea Elizabeth Rueda Rueda
//Sudoku
#include<iostream>
#include<fstream>
#include<string>
using namespace std;

int const DIM=9;//Dimencion de la matriz

typedef struct{
int vacias;//para ver cuantas casillas tengo libres.........
int tabla_digitos[DIM][DIM]; //para la tabla de digitos enteros
bool tabla_bool[DIM][DIM];//para la tabla deboleanos

}SUDOKU;

void nombre_archivos(string &inicial, string &solucion);
bool inicializar_tableroInicial(string inicial, SUDOKU &table_inicial);
bool inicializar_tableroSolucion(string solucion, SUDOKU &table_sol);
void lineas();
void paralelas();
void ver_posibles_valores(SUDOKU table_inicial);
void colocar_valor(SUDOKU &table_inicial);
void borrar_valor(SUDOKU&table_inicial);
void mostrar_valores_incorrectos(SUDOKU table_inicial, SUDOKU table_sol);
void reiniciar_tablero(SUDOKU &table_inicial);
void completar_casillas(SUDOKU &table_inicial);
bool sudoku_correcto(SUDOKU table_inicial, SUDOKU table_sol);
void leer_posicion(int &fila,int &columna);
bool posible_fila(int candi,SUDOKU table_inicial,int fila);
boolposible_columna(int candi, SUDOKU table_inicial, int columna);
bool posible_matriz(int candi, SUDOKU table_inicial, int fila, int columna);//comprueba los posibles valores que puede tener una region
int leer_valor();
void visualizar(SUDOKU table_inicial);

int main()
{
SUDOKU table_inicial, table_sol,libres;
bool error;//para saber si se ha producido algun error al cargar ficheros
int opcion=-1;string inicial="sudoku1.txt";//predefino el nombre inicial de fichero
string solucion="solsdk1.txt";//predefino el nombre de la solucion del sudoku
nombre_archivos(inicial,solucion);
error= inicializar_tableroInicial(inicial,table_inicial);
if(!error)
{
error=inicializar_tableroSolucion(solucion,table_sol);
if(!error)
{
while(opcion!=0)
{ cout<<endl;cout<<"Eligue una de las siguientes opciones: "<<endl;
cout<<"0.- SALIR"<<endl;
cout<<"1.- Ver posibles valores de casilla"<<endl;
cout<<"2.- Colocar un valor en una casilla"<<endl;
cout<<"3.- Borrar el valor de una casilla"<<endl;
cout<<"4.- Mostrar valores incorrectos"<<endl;
cout<<"5.- Reiniciartablero"<<endl;
cout<<"6.- Completar casillas simples"<<endl;
cin>>opcion;
switch(opcion)
{
case 0:
break;
case 1:
ver_posibles_valores(table_inicial);
break;
case 2:
colocar_valor(table_inicial);
break;
case 3:
borrar_valor(table_inicial);
break;
case 4:mostrar_valores_incorrectos(table_inicial,table_sol);
break;
case 5:
reiniciar_tablero(table_inicial);
break;
case 6:
completar_casillas(table_inicial);
break;
default : cout<<"La opcion introducida no es correcta "<<endl;
break;
}
if(table_inicial.vacias==0)
{
if(sudoku_correcto(table_inicial, table_sol))
{cout<<"ENHORABUENA HAS CONSEGUIDO SOLUCIONARLO "<<endl;
}
else
{
mostrar_valores_incorrectos(table_inicial,table_sol);
}
cin.sync();
cout<<"Pulsa intro para terminar...";
cin.get();
opcion=0;
}
}
}
}
return 0;
}

void visualizar(SUDOKU table_inicial)
{
for(int i=0;i<DIM;i++)
{if((i==0)||(i==3)||(i==6))
{ lineas();
cout<<endl;}
for(int j=0;j<DIM;j++)
{
if(j==0||j==3||j==6)
paralelas();
if(table_inicial.tabla_digitos[i][j]!=0)
{
cout<<table_inicial.tabla_digitos[i][j]<<" ";
}
else
cout<<" ";
}
paralelas();
cout<<endl;
}
lineas();
cout<<endl;
}

void nombre_archivos(string...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • sudoku en c++
  • Sudoku (lenguaje c)
  • Sudoku en c++
  • Sudoku
  • Sudoku
  • Sudoku
  • Sudoku
  • Sudoku

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS