Guest User

Untitled

a guest
Feb 21st, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.28 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. void le_tabuleiro (int tab[][9]) {
  4. int linha, coluna;
  5. for (linha=0; linha<9; linha++) {
  6. for (coluna=0; coluna<9; coluna++)
  7. scanf (" %d", &tab[linha][coluna]);
  8. }
  9. }
  10.  
  11. int main() {
  12. int tabuleiro[9][9], tabuleiro_correto=1, soma=0, produto=1, jogada_invalida=0, contador_jogada=0, contador_invalidas=0, testa_coluna, testa_linha, x, y, v, a, b, m, n, z, w, s, t;
  13.  
  14. le_tabuleiro(tabuleiro);
  15.  
  16. while (1) {
  17. scanf (" %d %d %d", &x, &y, &v);
  18. if (x==-1 && y==-1 && v==-1)
  19. break;
  20.  
  21. contador_jogada++;
  22.  
  23. if (tabuleiro[x][y]!=0)
  24. jogada_invalida++;
  25.  
  26. if (x<0 || y<0 || v<1 || x>8 || y>8 || v>9)
  27. jogada_invalida++;
  28.  
  29. for (testa_coluna=0; testa_coluna<9; testa_coluna++) {
  30. if (tabuleiro[x][testa_coluna]==v && tabuleiro[x][y]!=v) {
  31. jogada_invalida++;
  32. break;
  33. }
  34. }
  35.  
  36. for (testa_linha=0; testa_linha<9; testa_linha++) {
  37. if (tabuleiro[testa_linha][y]==v && tabuleiro[x][y]!=v) {
  38. jogada_invalida++;
  39. break;
  40. }
  41. }
  42.  
  43. if ((x==0 || x==1 || x==2) && (y==0 || y==1 || y==2)) {
  44. for (a=0; a<3; a++) {
  45. for (b=0; b<3; b++) {
  46. if (v==tabuleiro[a][b] && tabuleiro[x][y]!=v) {
  47. jogada_invalida++;
  48. break;
  49. }
  50. }
  51. }
  52. }
  53.  
  54. else if ((x==3 || x==4 || x==5) && (y==0 || y==1 || y==2)) {
  55. for (a=3; a<6; a++) {
  56. for (b=0; b<3; b++) {
  57. if (v==tabuleiro[a][b] && tabuleiro[x][y]!=v) {
  58. jogada_invalida++;
  59. break;
  60. }
  61. }
  62. }
  63. }
  64.  
  65. else if ((x==6 || x==7 || x==8) && (y==0 || y==1 || y==2)) {
  66. for (a=6; a<9; a++) {
  67. for (b=0; b<3; b++) {
  68. if (v==tabuleiro[a][b] && tabuleiro[x][y]!=v) {
  69. jogada_invalida++;
  70. break;
  71. }
  72. }
  73. }
  74. }
  75.  
  76. else if ((x==0 || x==1 || x==2) && (y==3 || y==4 || y==5)) {
  77. for (a=0; a<3; a++) {
  78. for (b=3; b<6; b++) {
  79. if (v==tabuleiro[a][b] && tabuleiro[x][y]!=v) {
  80. jogada_invalida++;
  81. break;
  82. }
  83. }
  84. }
  85. }
  86.  
  87. else if ((x==3 || x==4 || x==5) && (y==3 || y==4 || y==5)) {
  88. for (a=3; a<6; a++) {
  89. for (b=3; b<6; b++) {
  90. if (v==tabuleiro[a][b] && tabuleiro[x][y]!=v) {
  91. jogada_invalida++;
  92. break;
  93. }
  94. }
  95. }
  96. }
  97.  
  98. else if ((x==6 || x==7 || x==8) && (y==3 || y==4 || y==5)) {
  99. for (a=6; a<9; a++) {
  100. for (b=3; b<6; b++) {
  101. if (v==tabuleiro[a][b] && tabuleiro[x][y]!=v) {
  102. jogada_invalida++;
  103. break;
  104. }
  105. }
  106. }
  107. }
  108.  
  109. else if ((x==0 || x==1 || x==2) && (y==6 || y==7 || y==8)) {
  110. for (a=0; a<3; a++) {
  111. for (b=6; b<9; b++) {
  112. if (v==tabuleiro[a][b] && tabuleiro[x][y]!=v) {
  113. jogada_invalida++;
  114. break;
  115. }
  116. }
  117. }
  118. }
  119.  
  120. else if ((x==3 || x==4 || x==5) && (y==6 || y==7 || y==8)) {
  121. for (a=3; a<6; a++) {
  122. for (b=6; b<9; b++) {
  123. if (v==tabuleiro[a][b] && tabuleiro[x][y]!=v) {
  124. jogada_invalida++;
  125. break;
  126. }
  127. }
  128. }
  129. }
  130.  
  131. else if ((x==6 || x==7 || x==8) && (y==6 || y==7 || y==8)) {
  132. for (a=6; a<9; a++) {
  133. for (b=6; b<9; b++) {
  134. if (v==tabuleiro[a][b] && tabuleiro[x][y]!=v) {
  135. jogada_invalida++;
  136. break;
  137. }
  138. }
  139. }
  140. }
  141.  
  142.  
  143. if (jogada_invalida>0) {
  144. contador_invalidas++;
  145. printf("Jogada Invalida!\n");
  146. }
  147.  
  148. else if (jogada_invalida==0)
  149. tabuleiro[x][y]=v;
  150.  
  151. jogada_invalida=0;
  152.  
  153. }
  154.  
  155. for (a=0; a<9; a++) {
  156. for (b=0; b<9; b++) {
  157. if (tabuleiro[a][b]==0)
  158. tabuleiro_correto=0;
  159. }
  160. }
  161.  
  162. s=0;
  163. t=3;
  164. while (1) {
  165. for (m=s; m<t; m++) {
  166. for (n=s; n<t; n++) {
  167. for (z=s; z<t; z++) {
  168. for (w=s; w<t; w++) {
  169. if ((tabuleiro[m][n]==tabuleiro[z][w]) && (m!=z || n!=w)){
  170. tabuleiro_correto=0;
  171. }
  172. }
  173. }
  174. }
  175. }
  176. s+=3;
  177. t+=3;
  178. if (s==9)
  179. break;
  180. }
  181.  
  182. for (m=0; m<9; m++) {
  183. for (n=0; n<9; n++) {
  184. produto*=tabuleiro[m][n];
  185. soma+=tabuleiro[m][n];
  186. }
  187. if (soma!=45 || produto!=362880)
  188. tabuleiro_correto=0;
  189. soma=0;
  190. produto=1;
  191. }
  192. for (m=0; m<9; m++) {
  193. for (n=0; n<9; n++) {
  194. produto*=tabuleiro[n][m];
  195. soma+=tabuleiro[n][m];
  196. }
  197. if (soma!=45 || produto!=362880)
  198. tabuleiro_correto=0;
  199. soma=0;
  200. produto=1;
  201. }
  202.  
  203. if (tabuleiro_correto==0)
  204. printf ("TABULEIRO INCOMPLETO!\n");
  205.  
  206. else
  207. printf ("TABULEIRO RESOLVIDO!\n");
  208.  
  209. for (a=0; a<9; a++) {
  210. for (b=0; b<9; b++) {
  211. if (b<8)
  212. printf ("%d ", tabuleiro[a][b]);
  213. else
  214. printf ("%d", tabuleiro[a][b]);
  215. }
  216. printf ("\n");
  217. }
  218.  
  219. printf ("NUMERO DE JOGADAS: %d\n", contador_jogada);
  220. printf ("JOGADAS VALIDAS: %d\n", contador_jogada-contador_invalidas);
  221. printf ("JOGADAS INVALIDAS: %d\n", contador_invalidas);
  222.  
  223. return 0;
  224. }
Add Comment
Please, Sign In to add comment