Jump to content
Sign in to follow this  
ricardo gomes araujo

[Resolvido] Matriz - Quadrado mágico

Recommended Posts

Estou com problema neste programa:

 

Desenvolver um programa que dada uma matriz qualquer de n linhas e m colunas dizer se a mesma e um quadrado mágico.

Lembrando que em um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos das diagonais principal e secundária são todas iguais.

 

E o programa não pode ser feito utilizando alocação dinâmica

 

Segue o que tentei fazer:

 

#include <stdio.h>
#include <stdlib.h>
int main( )
{
   int linhas,colunas, i, j;
   int somaDP, somaDS, calculaSD, somaLinhas, somaColunas;

   //Inicialização das variáveis
   somaDP = 0; // soma da diagonal principal
   somaDS = 0; // soma da diagonal secundária
   int somainicial=0; //soma inicial de cada linha da matriz
   int verdadeiro=1; //verifica se a matriz e um quadrado mágico

   /*Entrar com a dinensão da matriz desejada*/
   printf("Entre com o numero de linhas: ");
   scanf("%d",&linhas);
   printf("Entre com o numero de colunas: ");
   scanf("%d",&colunas);
   /*declaração das matrizes que serão usadas no programa*/
   int mat1[linhas][colunas];

       /*laço de repetição para entrar com os valores da matriz 1*/
       for (i=0; i<linhas; i++)
         for(j=0; j<colunas; j++)
         {
         printf(" Entre com os elementos da matriz 1 [%d][%d]:",i+1,j+1);
         scanf("%d",&mat1[i][j]);
         }      

              //somando a 1 coluna  
              for (i=0; i<colunas; i++) 
              somainicial +=mat1[i][0]; //somaInicial
              printf("\nsoma da coluna 1 %d\n\n",somainicial);

              //testando as linhas
              for (i=0; i<linhas; i++){
                  somaLinhas=0; 
                  for(j=0; j<colunas; j++) {
                      somaLinhas+= mat1[0][j];
                  }  
                  if(somaLinhas!=somainicial)
                      verdadeiro=0;
              }

              //testando as colunas
              for (i=0; i<colunas; i++){
                  somaColunas=0; 
                  for(j=0; j<colunas; j++) {
                      somaColunas+= mat1[i][0];
                  }  
                  if(somaColunas!=somainicial)
                      verdadeiro=0;
              }

              //testar a Diagonal principal
                  for (i=0; i<colunas; i++){
                  somaDP=0; 
                  for(j=0; j<colunas; j++) {

                           if (i==j)
                           somaDP += mat1[i][j];
                   }  
                  if(somaDP!=somainicial)
                      verdadeiro=0;
              }
               //testar a Diagonal secundária 
              for (i=0; i<colunas; i++){
                  somaDS=0; 
                  for(j=colunas-1; j>-1; j--) {


                           somaDS += mat1[i][j];

                    //  somaColunas+= mat1[i][0];
                  }  
                  if(somaDS!=somainicial)
                      verdadeiro=0;
              }

          /*Mostra a matriz 1 criada*/
          if(verdadeiro==1)
          printf("\n\nA matriz 1 criada eh quadrado magico \n\n");
          else
          printf("\n\nA matriz 1 criada nao eh quadrado magico \n\n");



            for (i=0; i<linhas; i++)
            {
               for(j=0; j<colunas;j++)
               printf("%3.d\t",mat1[i][j]);
               printf("\n\n");
            }
              printf("\n\n\n");
             getch();
             return 0;
}


 

Só que apresenta erro para qualquer matriz que eu entrar o programa diz que e quadrado mágico eu não sei onde eu errei na lógica.

Alguém poderia me ajudar a terminar o programa?

Share this post


Link to post
Share on other sites

Você não prefere modularizar? fica + fácil da gente achar onde pode estar o erro.

 

[]s

Share this post


Link to post
Share on other sites

olá, como vc consegui fazer? preciso fazer uma função q verifique se é um quadrado magico,mas não sei nem pra onde vai. o professor ficou chateado por 95% da classe ter tirado nota baixa e passou uma lista de arrancar os cabelos, pq não sei programar mt bem...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.