Advertisement
Jvsierra

Sudoku

Apr 7th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.57 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <time.h>
  5.  
  6. int matriz[9][9];
  7.  
  8. void inicializaMatriz();
  9. void imprimeMatriz();
  10. void geraMatrizJogo();
  11. int checaLinha(int linha, int coluna, int valor);
  12. int checaColuna(int linha, int coluna, int valor);
  13. int checaSecao(int linha, int coluna, int valor);
  14. int conta();
  15.  
  16. int main()
  17. {
  18.     inicializaMatriz();
  19.  
  20.     srand(time(NULL));
  21.  
  22.     geraMatrizJogo();
  23.  
  24.     getch();
  25. }
  26.  
  27. void inicializaMatriz()
  28. {
  29.     int i, j;
  30.  
  31.     for(i = 0; i < 9; i++)
  32.     {
  33.         for(j = 0; j < 9; j++)
  34.         {
  35.             matriz[i][j] = 0;
  36.         }
  37.     }
  38. }
  39.  
  40. void geraMatrizJogo()
  41. {
  42.    int i, j, val_i, val_j, max_i, max_j, valor, qntd;
  43.  
  44.    val_i = 0;
  45.    val_j = 0;
  46.    max_i = 9;
  47.    max_j = 9;
  48.  
  49.    for(i = val_i; i < max_i; i++)
  50.    {
  51.  
  52.    }
  53.  
  54. }
  55.  
  56. void imprimeMatriz()
  57. {
  58.     int i, j;
  59.  
  60.     printf("\n=============================\n");
  61.     for(i = 0; i < 9; i++)
  62.     {
  63.         for(j = 0; j < 9; j++)
  64.         {
  65.             printf(" %d ", matriz[i][j]);
  66.  
  67.             if((j + 1) % 3 == 0)
  68.                 printf("|");
  69.         }
  70.  
  71.         if((i + 1) % 3 == 0)
  72.             printf("\n=============================");
  73.         printf("\n");
  74.     }
  75. }
  76.  
  77. int checaLinha(int linha, int coluna, int valor)
  78. {
  79.     int i, cont = 0;
  80.  
  81.  
  82.     for(i = 0; i < 9; i++)
  83.     {
  84.         if(matriz[linha][i] == valor && i != coluna)
  85.             cont++;
  86.     }
  87.  
  88.     return cont;
  89. }
  90.  
  91. int checaColuna(int linha, int coluna, int valor)
  92. {
  93.     int i, cont = 0;
  94.  
  95.     for(i = 0; i < 9; i++)
  96.     {
  97.         if(matriz[i][coluna] == valor && i != linha)
  98.             cont++;
  99.     }
  100.  
  101.     return cont;
  102. }
  103.  
  104. int checaSecao(int linha, int coluna, int valor)
  105. {
  106.     int i, j, inicioLinha, inicioColuna, maxLinha, maxColuna, cont = 0;
  107.  
  108.     if(linha >= 0 && linha <= 2)
  109.     {
  110.        inicioLinha = 0;
  111.        maxLinha = 2;
  112.  
  113.        if(coluna >= 0 && coluna <= 2)
  114.        {
  115.         inicioColuna = 0;
  116.         maxColuna = 2;
  117.        }
  118.        else if(coluna >= 3 && coluna <= 5)
  119.        {
  120.         inicioColuna = 3;
  121.         maxColuna = 5;
  122.        }
  123.        else
  124.        {
  125.         inicioColuna = 6;
  126.         maxColuna = 8;
  127.        }
  128.     }
  129.     else if(linha >= 3 && linha <= 5)
  130.     {
  131.         inicioLinha = 3;
  132.         maxLinha = 5;
  133.  
  134.         if(coluna >= 0 && coluna <= 2)
  135.         {
  136.             inicioColuna = 0;
  137.             maxColuna = 2;
  138.         }
  139.         else if(coluna >= 3 && coluna <= 5)
  140.         {
  141.             inicioColuna = 3;
  142.             maxColuna = 5;
  143.         }
  144.         else
  145.         {
  146.             inicioColuna = 6;
  147.             maxColuna = 8;
  148.         }
  149.     }
  150.     else
  151.     {
  152.         inicioLinha = 6;
  153.         maxLinha = 8;
  154.  
  155.         if(coluna >= 0 && coluna <= 2)
  156.         {
  157.             inicioColuna = 0;
  158.             maxColuna = 2;
  159.         }
  160.         else if(coluna >= 3 && coluna <= 5)
  161.         {
  162.             inicioColuna = 3;
  163.             maxColuna = 5;
  164.         }
  165.         else
  166.         {
  167.             inicioColuna = 6;
  168.             maxColuna = 8;
  169.         }
  170.     }
  171.  
  172.     for(i = inicioLinha; i <= maxLinha; i++)
  173.     {
  174.         for(j = inicioColuna; j <= maxColuna; j++)
  175.         {
  176.             if(matriz[i][j] == valor && (i != linha && j != coluna))
  177.                 cont++;
  178.         }
  179.     }
  180.  
  181.     return cont;
  182. }
  183.  
  184. int conta(r)
  185. {
  186.     int i, j, cont = 0;
  187.  
  188.     for(i = 0; i < 9; i++)
  189.     {
  190.         for(j = 0; j < 9; j++)
  191.         {
  192.             if(checaColuna(i, j, matriz[i][j]) == 0 && checaLinha(i, j, matriz[i][j]) == 0 && checaSecao(i, j, matriz[i][j]))
  193.                 cont++;
  194.         }
  195.     }
  196.  
  197.     return cont;
  198. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement