elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [problema]Sudoki
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [problema]Sudoki  (Leído 1,636 veces)
jorgerolli

Desconectado Desconectado

Mensajes: 3


Ver Perfil
[problema]Sudoki
« en: 25 Marzo 2012, 03:48 am »

Hola buenas a ver si alguien puede ayudarme con un problema de mi sudoku tengo creado el codigo para quue sea capaz de introducir numeros en el sudoku de 0 a 9 pero el problema es que no se me ocurre nada para la restriccion de añadir numeros que esten ya incluidos en la fila en la columna o en la submatriz, se lo agradeceria mucho!!


Código
  1. #include <iostream>
  2. #include<fstream>
  3. using namespace std;
  4. typedef char tab[9][9];
  5. bool inicializarSudoku(tab Tablero);
  6. void mostrarSudoku(tab Tablero);
  7. void RellenarSudoku(tab Tablero);
  8.  
  9. int main()
  10. {
  11.  
  12. int a=0;
  13. tab Tablero;
  14.    inicializarSudoku(Tablero);
  15. mostrarSudoku(Tablero);
  16. while(a==0){
  17. RellenarSudoku(Tablero);
  18. mostrarSudoku(Tablero);
  19. }
  20. return 0;
  21. }
  22.  
  23. void RellenarSudoku(tab Tablero)
  24. {
  25.  
  26. int x, y;
  27. char valor;
  28.  
  29.  
  30. cout<<"introduce fila";
  31. cin>>x;
  32.  
  33. cout<<"introduce columna";
  34. cin>>y;
  35.  
  36. cout<<"introduce valor";
  37. cin>>valor;
  38. if((x>=9)&&(y>=9)&&(valor>9))
  39. {cout <<"error de numero"<<endl;}
  40. else Tablero[x][y]=valor;
  41. }
  42. bool inicializarSudoku(tab Tablero)
  43. {
  44.  
  45.     int a, b;
  46.     for (a=0;a<9;a++)
  47.     {
  48.         for (b=0;b<9;b++)
  49.         {
  50.             Tablero[a][b]=' ';
  51.         }
  52.     }
  53.  
  54. int i, j;
  55. char c;
  56.  
  57. ifstream archivo;
  58.  
  59. archivo.open("sudoku.txt");
  60.  
  61.  
  62. do
  63. {
  64. archivo >> j>>i>>c;
  65. Tablero[i][j] = c;
  66. }
  67. while(!archivo.eof());
  68.  
  69. archivo.close();
  70. }
  71.  
  72.  
  73. void mostrarSudoku(tab Tablero)
  74. {cout<<"  - - -   - - -   - - -  "<<endl<<"|"<<" ";
  75.    for(int i=0;i<3;i++)
  76. for(int j=0;j<1;j++){
  77.  
  78. cout<<Tablero[i][j]<<" ";}
  79. cout<<"|"<<" ";
  80. for(int i=3;i<6;i++)
  81. for(int j=0;j<1;j++){
  82.  
  83. cout<<Tablero[i][j]<<" ";}
  84. cout<<"|"<<" ";
  85. for(int i=6;i<9;i++)
  86. for(int j=0;j<1;j++){
  87.  
  88. cout<<Tablero[i][j]<<" ";}
  89. cout<<"|"<<" "<<endl<<"|"<<" ";
  90.  
  91.  
  92.  
  93.  
  94.  
  95. for(int i=0;i<3;i++)
  96. for(int j=1;j<2;j++){
  97.  
  98. cout<<Tablero[i][j]<<" ";}
  99. cout<<"|"<<" ";
  100. for(int i=3;i<6;i++)
  101. for(int j=1;j<2;j++){
  102.  
  103. cout<<Tablero[i][j]<<" ";}
  104. cout<<"|"<<" ";
  105. for(int i=6;i<9;i++)
  106. for(int j=1;j<2;j++){
  107.  
  108. cout<<Tablero[i][j]<<" ";}
  109. cout<<"|"<<" "<<endl<<"|"<<" ";
  110.  
  111.  
  112.  
  113. for(int i=0;i<3;i++)
  114. for(int j=2;j<3;j++){
  115.  
  116. cout<<Tablero[i][j]<<" ";}
  117. cout<<"|"<<" ";
  118. for(int i=3;i<6;i++)
  119. for(int j=2;j<3;j++){
  120.  
  121. cout<<Tablero[i][j]<<" ";}
  122. cout<<"|"<<" ";
  123. for(int i=6;i<9;i++)
  124. for(int j=2;j<3;j++){
  125.  
  126. cout<<Tablero[i][j]<<" ";}
  127. cout<<"|"<<" "<<endl;
  128.  
  129. cout<<"  - - -   - - -   - - -  "<<endl<<"|"<<" ";
  130.  
  131. for(int i=0;i<3;i++)
  132. for(int j=3;j<4;j++){
  133.  
  134. cout<<Tablero[i][j]<<" ";}
  135. cout<<"|"<<" ";
  136. for(int i=3;i<6;i++)
  137. for(int j=3;j<4;j++){
  138.  
  139. cout<<Tablero[i][j]<<" ";}
  140. cout<<"|"<<" ";
  141. for(int i=6;i<9;i++)
  142. for(int j=3;j<4;j++){
  143.  
  144. cout<<Tablero[i][j]<<" ";}
  145. cout<<"|"<<" "<<endl<<"|"<<" ";
  146.  
  147.  
  148.  
  149. for(int i=0;i<3;i++)
  150. for(int j=4;j<5;j++){
  151.  
  152. cout<<Tablero[i][j]<<" ";}
  153. cout<<"|"<<" ";
  154. for(int i=3;i<6;i++)
  155. for(int j=4;j<5;j++){
  156.  
  157. cout<<Tablero[i][j]<<" ";}
  158. cout<<"|"<<" ";
  159. for(int i=6;i<9;i++)
  160. for(int j=4;j<5;j++){
  161.  
  162. cout<<Tablero[i][j]<<" ";}
  163. cout<<"|"<<" "<<endl<<"|"<<" ";
  164.  
  165.  
  166.  
  167. for(int i=0;i<3;i++)
  168. for(int j=5;j<6;j++){
  169.  
  170. cout<<Tablero[i][j]<<" ";}
  171. cout<<"|"<<" ";
  172. for(int i=3;i<6;i++)
  173. for(int j=5;j<6;j++){
  174.  
  175. cout<<Tablero[i][j]<<" ";}
  176. cout<<"|"<<" ";
  177. for(int i=6;i<9;i++)
  178. for(int j=5;j<6;j++){
  179.  
  180. cout<<Tablero[i][j]<<" ";}
  181. cout<<"|"<<" "<<endl;
  182.  
  183. cout<<"  - - -   - - -   - - -  "<<endl<<"|"<<" ";
  184.  
  185. for(int i=0;i<3;i++)
  186. for(int j=6;j<7;j++){
  187.  
  188. cout<<Tablero[i][j]<<" ";}
  189. cout<<"|"<<" ";
  190. for(int i=3;i<6;i++)
  191. for(int j=6;j<7;j++){
  192.  
  193. cout<<Tablero[i][j]<<" ";}
  194. cout<<"|"<<" ";
  195. for(int i=6;i<9;i++)
  196. for(int j=6;j<7;j++){
  197.  
  198. cout<<Tablero[i][j]<<" ";}
  199. cout<<"|"<<" "<<endl<<"|"<<" ";
  200.  
  201.  
  202.  
  203. for(int i=0;i<3;i++)
  204. for(int j=7;j<8;j++){
  205.  
  206. cout<<Tablero[i][j]<<" ";}
  207. cout<<"|"<<" ";
  208. for(int i=3;i<6;i++)
  209. for(int j=7;j<8;j++){
  210.  
  211. cout<<Tablero[i][j]<<" ";}
  212. cout<<"|"<<" ";
  213. for(int i=6;i<9;i++)
  214. for(int j=7;j<8;j++){
  215.  
  216. cout<<Tablero[i][j]<<" ";}
  217. cout<<"|"<<" "<<endl<<"|"<<" ";
  218.  
  219. for(int i=0;i<3;i++)
  220. for(int j=8;j<9;j++){
  221.  
  222. cout<<Tablero[i][j]<<" ";}
  223. cout<<"|"<<" ";
  224. for(int i=3;i<6;i++)
  225. for(int j=8;j<9;j++){
  226.  
  227. cout<<Tablero[i][j]<<" ";}
  228. cout<<"|"<<" ";
  229. for(int i=6;i<9;i++)
  230. for(int j=8;j<9;j++){
  231.  
  232. cout<<Tablero[i][j]<<" ";}
  233. cout<<"|"<<" "<<endl;
  234. cout<<"  - - - - - - - - - - -  "<<endl<<" ";
  235. }
  236.  


En línea

Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: [problema]Sudoki
« Respuesta #1 en: 25 Marzo 2012, 04:14 am »

Código
  1. if((x>=9)&&(y>=9)&&(valor>9))
  2. {
  3.     cout <<"error de numero"<<endl;
  4. }
  5. else Tablero[x][y]=valor;
  6.  

Esto debería ser así:
Código
  1. if((x>=9) || (y>=9) || (valor>9))
  2. {
  3.     cout <<"error de numero"<<endl;
  4. }
  5. else Tablero[x][y]=valor;
  6.  

Te falta validar si el número ingresado ya existe en la fila actual, columna actual, o cuadro actual. Deberías hacer una función para cada uno que retorne un valor bool. Solo permitís el ingreso del número cuando estas funciones retornen( todas ) false.
Un ejemplo para la fila:
Código
  1. bool validar_fila( Tab tablero, int fila, char valor ){
  2.     for( int a = 0; a<9; a++ ){
  3.          if( tablero[ fila ][ a ] == valor )return true;
  4.     }
  5.     return false;
  6. }


En línea

jorgerolli

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: [problema]Sudoki
« Respuesta #2 en: 25 Marzo 2012, 15:14 pm »

mas o menos entiendo la idea pero no se como integrar la funcion booleana que dices con la funcion rellenar tablero
En línea

Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: [problema]Sudoki
« Respuesta #3 en: 25 Marzo 2012, 19:46 pm »

Sería algo así:

Código
  1. cout << "introduce valor";
  2. cin>>valor;
  3. if( ( x>=9 ) || ( y>=9 ) || ( valor>9 ) ){
  4.     cout << "numero fuera de rango" << endl;
  5. } else {
  6.  
  7.     if( validar_fila( ... ) && validar_columna( ... ) && validar_cuadro( ... ) ){
  8.          Tablero[ x ][ y ]=valor;
  9.     } else {
  10.          cout << "El numero ya se ingreso" << endl;
  11.     }
  12. }
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema BlueZScanner y problema de conexión
Hacking Mobile
Kasswed 3 6,312 Último mensaje 6 Mayo 2006, 22:04 pm
por Gospel
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines