Advertisement
obernardovieira

Magic Square (any size)

Mar 9th, 2015
478
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.04 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. #define LARGURA     4
  4.  
  5. int quadradoMagico(int quadrado[LARGURA][LARGURA]) {
  6.     int magico = 1, c, l;
  7.     int soma[2*LARGURA+2];
  8.  
  9.     for(l = 0; l != (2*LARGURA+2); l++) {
  10.         soma[l] = 0;
  11.     }
  12.  
  13.     for(l = 0; l != LARGURA; l++) {
  14.         for(c = 0; c != LARGURA; c++) {
  15.  
  16.             soma[l]             += quadrado[l][c];
  17.             soma[l + LARGURA]   += quadrado[c][l];
  18.  
  19.             if(l == c) {
  20.                 soma[(2*LARGURA)] += quadrado[l][c];
  21.             }
  22.             if((l+c) == (LARGURA-1)) {
  23.                 soma[(2*LARGURA+1)] += quadrado[l][c];
  24.             }
  25.         }
  26.     }
  27.  
  28.     //just for debug
  29.     for(l = 0; l != (2*LARGURA+2); l++) {
  30.         printf("%d -> %d\n",l,soma[l]);
  31.     }
  32.  
  33.  
  34.     for(magico = 1, c = 0; c != 2*LARGURA+2; c++) {
  35.         if(soma[0] != soma[c]) {
  36.             magico = 0;
  37.             break;
  38.         }
  39.     }
  40.  
  41.  
  42.     return magico; 
  43.  
  44. }
  45.  
  46.  
  47. int main() {
  48.  
  49.     /*int matrix[LARGURA][LARGURA] = {
  50.         {6, 1, 8},
  51.         {7, 5, 3},
  52.         {2, 9, 4}
  53.     };*/
  54.     int matrix[LARGURA][LARGURA] = {
  55.         {1, 12, 6, 15},
  56.         {8, 13, 3, 10},
  57.         {11, 2, 16, 5},
  58.         {14, 7, 9, 4}
  59.     };
  60.     int quadradoM = quadradoMagico(matrix);
  61.     printf("É magico ? %d\n", quadradoM);
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement