Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros 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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.