Tema: Matrices
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 17/06/2012, 13:18
Feldner
 
Fecha de Ingreso: abril-2012
Mensajes: 12
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Matrices

Código C:
Ver original
  1. void cargarsudokus(int matriz[ALTO][ANCHO])
  2. {
  3.  int i;
  4.  int e;
  5.  int sudokus = -1;
  6.  
  7.  printf("\n Elija entre los 5 sudokus, pulsando del 1 al 5: ");
  8.  scanf("%d",&sudokus);
  9.  
  10.  
  11.      
  12.      if(sudokus == 1)
  13.      {
  14.      dibujar_tablero(sudokus1);
  15.      }
  16.              
  17.      else if(sudokus == 2)
  18.      {
  19.    
  20.     dibujar_tablero(sudokus2);
  21.        
  22.      }
  23.    
  24.      
  25.      else if(sudokus == 3)
  26.      {
  27.    
  28.      dibujar_tablero(sudokus3);
  29.    
  30.      }
  31.      
  32.      else if(sudokus == 4)
  33.      {
  34.      
  35.     dibujar_tablero(sudokus4);
  36.            
  37.      }
  38.          
  39.      else if(sudokus == 5)
  40.      {
  41.      dibujar_tablero(sudokus5);      
  42.      }
  43.      else
  44.      {
  45.      printf("Opcion icorrecta.");
  46.        }       
  47.    
  48.    
  49. }
  50.  
  51. void practicar_sudoku(int matriz[ALTO][ANCHO])
  52. {
  53.  int op = -1;
  54.  while(finalizar(matriz)!=0){
  55.              dibujar_tablero(matriz);
  56.              metenumeros(matriz);
  57.              printf("Desea seguir introduciendo valores al sudoku? (1)Si (2) No: ");
  58.                                          scanf("%d", &op);
  59.                                          if(op==1)
  60.                                          {
  61.                                          printf("Guardando...\n");
  62.                                          }
  63.                                          else
  64.                                          {
  65.                                          printf("Validando su sudoku:OK\n");
  66.                                          printf("-->>Regresando al menu<<--\n");
  67.                                          main();
  68.                                          }           
  69.              finalizar(matriz);
  70.              }
  71. }
  72.  
  73.  
  74. void llamararchivo ()
  75. {
  76. FILE * Sudoku;
  77.  char palabras[100];
  78.    
  79.    Sudoku = fopen("Sudoku.txt","r");
  80.    
  81.     while (feof(Sudoku)==0)
  82.     {
  83.     fgets(palabras,100,Sudoku);
  84.     printf("%S",palabras);
  85.     }
  86.  fclose(Sudoku);
  87.  return 0;
  88. }
  89.  
  90.  void DaValoresMatriz(int matriz[ALTO][ANCHO])
  91.          {
  92.          int fila, columna, numero;
  93.          int i;
  94.          int e;
  95.          for(i=0;i<ALTO;i++)
  96.          {
  97.  
  98.             for (e=0; e<ANCHO; e++)
  99.                  {
  100.                  matriz[i][e]= (rand() % 9) + 1;
  101.                  }
  102.           }
  103.          }
  104.  
  105.  
  106.          
  107.  
  108.  
  109.      
  110. int coordenadavalida(int fila, int columna)
  111. {
  112.   if(fila>=0 && fila <9 && columna>=0 && columna <9)
  113.           return 1;
  114.    else
  115.           return 0;
  116. }
  117.  
  118. int intenta_poner(int matriz[ALTO][ANCHO],int i,int j,int k) {
  119.  
  120.   int c,l;
  121.  
  122.   for (l = 0; l < 9; l++)
  123.         if (matriz[l][j] == k)
  124.           return 0;
  125.   for (c = 0; c < 9; c++)
  126.         if (matriz[i][c] == k)
  127.           return 0;
  128.   for (l = i - i % 3; l < i - i % 3 +3; l++)
  129.         for (c = j - j % 3; c < j - j % 3 + 3; c++)
  130.           if (matriz[l][c] == k)
  131.         return 0;
  132.   matriz[i][j] = k;
  133.   dibujar_tablero(matriz);
  134.   return 1;
  135. }
  136.  
  137. int finalizar(int matriz[ALTO][ANCHO])
  138. {
  139. int i,j;
  140.         for (i=0;i<9;i++)
  141.                 for (j=0;j<9;j++)
  142.                    if (matriz[i][j]==0)
  143.                          return 1;
  144. }
  145.  
  146.  
  147. void escribir(int matriz[ALTO][ANCHO],int fila, int columna, int numero) {
  148.          matriz[fila][columna]=numero;
  149. }
  150.  
  151.  
  152. int numerovalido(int numero)
  153. {
  154.   if(numero>0 && numero <=9)
  155.          return 1;
  156.    else
  157.           return 0;
  158.  
  159. }
  160. int comprobar(int matriz[ALTO][ANCHO], int fila, int columna, int numero) {
  161.          if (matriz[fila][columna]==0)
  162.                  return 1;
  163.          else
  164.                  return 0;      
  165. }
  166.  
  167. void metenumeros(int matriz[ALTO][ANCHO])
  168. {
  169.              printf("Introduzca la fila: \n");
  170.              scanf("%d", &fila);
  171.              if ((fila < 1) || (fila > 9)) // si el valor de la fila es menor que 1 "||"(or) es mayor que 9, (no se usa && (and))
  172.              {
  173.              printf("Valor invalido para la fila,ingrese un numero entre 1 y 9: \n");
  174.              scanf("%d", &fila);
  175.              }
  176.              printf("\nIntroduzca la columna: \n");
  177.              scanf("%d", &columna);
  178.              if((columna < 1) || (columna > 9))
  179.              {
  180.              printf("Valor invalido para la columna, ingrese un numero entre 1 y 9: \n");
  181.              scanf("%d", &columna);
  182.              }
  183.              printf("Introduzca el numero a insertar: ");
  184.              scanf("%d", &numero);
  185.              if((numero < 1) || (numero > 9))
  186.              {
  187.              printf("Numero no valido, ingrese un numero entre 1 y 9\n");
  188.              scanf("%d", &numero);
  189.              }
  190.              juego(matriz);
  191.              }
  192.  
  193.  
  194. void juego(int matriz[ALTO][ANCHO])
  195. {
  196.       int op =-1;
  197.      
  198.         if (coordenadavalida(fila-1, columna-1)==1)
  199.         {
  200.            printf("Coordenada Valida\n");
  201.            if (numerovalido(numero)==1)
  202.            {
  203.                   printf("Numero valido\n");
  204.                    if (comprobar(matriz, fila-1, columna-1, numero)==1)
  205.                   {  
  206.                           printf("Posicion vacia\n");
  207.                           if (intenta_poner(matriz, fila-1, columna-1, numero)==1)
  208.                           {
  209.                                          printf("Cuadrante OK\n");
  210.                                          escribir(matriz,fila-1,columna-1,numero);  
  211.                            }  
  212.                            else
  213.                            {
  214.                                    printf("No fue posible introducir detrminado numero, ya existe en la fila o en la columna o en el mismo cuadrante\n");
  215.                            }
  216.                    }    
  217.                    else
  218.                    {
  219.                            printf("Pero esta posicion ya esta ocupada\n");
  220.                    }
  221.                 }  
  222.                 else
  223.                 {
  224.                         printf("Numero invalido\n");
  225.                 }      
  226.         }
  227.         else
  228.         {
  229.                 printf("Coordenada invalida\n");
  230.         }                
  231. }
  232.  
  233.              
  234. void dibujar_tablero(int matriz[ALTO][ANCHO]) {
  235.   int i,j;
  236.  
  237.   printf("  1  2  3   4  5  6   7  8  9  \n");
  238.   printf("+---------+---------+---------+\n");
  239.   for (i = 0; i < 9; i++) {
  240.         printf("|");
  241.         for (j = 0; j < 9; j++) {
  242.           if (matriz[i][j] != 0)
  243.         printf(" %d ", matriz[i][j]);
  244.           else
  245.         printf("   ");
  246.           if (j % 3 == 2)
  247.         printf("|");
  248.         }
  249.         if (i % 3 == 2)
  250.           printf("\n+---------+---------+---------+");
  251.         printf("\n");
  252.   }