Advertisement
Guest User

Matriz Quadrado Mágico

a guest
Feb 25th, 2011
5,219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.98 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define TRUE 1
  5. #define FALSE 0
  6.  
  7. int main( )
  8. {
  9.     int linhas, colunas, a;
  10.  
  11.     printf("Entre com o numero de linhas : ");
  12.     scanf("%i", &linhas);
  13.     printf("Entre com o numero de colunas : ");
  14.     scanf("%i", &colunas);
  15.    
  16.     int matriz[linhas][colunas];
  17.  
  18.     int tam_matriz = linhas * colunas;
  19.    
  20.     for(a=0;a<tam_matriz;a++) {
  21.         printf("Entre com o elemento [%i][%i] da matriz : ",
  22.            ((int)(a/linhas) % colunas)+1, (a % colunas)+1);
  23.         scanf("%i", &matriz[(int)(a/linhas) % colunas][a % colunas]);
  24.     }
  25.    
  26.     for(a=0;a<tam_matriz;a++) {
  27.        if ((a % colunas) == 0) printf("(");
  28.        printf(" %i ",matriz[(int)(a/linhas) % colunas][a % colunas]);
  29.        if ((a % colunas) < colunas-1) printf(",");
  30.        else printf(") \n");      
  31.     }
  32.    
  33.    
  34.    
  35.     /** VERIFICA SE É QUADRADO MÀGICO */
  36.     /* Rotina adptada de:
  37.       https://sites.google.com/a/liesenberg.biz/cjogos/home/materiais-de-apoio/topicos-relativos-a-c/matrizes/quadrado-mgico
  38.       Acessado em: 25/02/2011
  39.     */
  40.     int i, j, val = 0, v, qM = TRUE;
  41.     for (j = 0; j < colunas; j++) val = val + matriz[0][j];
  42.     i = 1;
  43.     while (qM && i < linhas)
  44.     {
  45.         v = 0;
  46.         for (j = 0; j < colunas; j++) v = v + matriz[i][j];
  47.         i = i + 1;
  48.         qM = v == val;
  49.     }
  50.     j = 0;
  51.     while (qM && j < colunas)
  52.     {
  53.         v = 0;
  54.         for (i = 0; i < linhas; i++) v = v + matriz[i][j];
  55.         j = j + 1;
  56.         qM = v == val;
  57.     }
  58.     if (qM)
  59.     {
  60.         v = 0;
  61.         for (i = 0; i < linhas; i++) v = v + matriz[i][i];
  62.         qM = v == val;
  63.         if (qM)
  64.         {
  65.             v = 0;
  66.             for (i = 0; i < linhas; i++) v = v + matriz[i][colunas - i - 1];
  67.             qM = v == val;
  68.         }
  69.     }
  70.     /* FIM ROTINA */
  71.    
  72.     if (qM) printf("\n\nMatriz eh quadrado magico.\n");
  73.     else printf("\n\nMatriz nao eh quadrado magico.\n");
  74.    
  75.     getch();
  76.     return 0;
  77.  
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement