Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
Carregando comentários...