Buscar

Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha

Dizemos que uma matriz quadrada inteira é 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. Dada uma matriz quadrada dimensão MxM,verifique se ela é um quadrado mágico através de um algoritmo. Exemplo de matriz quadrado mágico:

[8 0 7

4 5 6

3 10 2]

💡 4 Respostas

User badge image

Andre Smaira

Para resolver esse problema devemos realizar todos os cálculos possíveis assim como está no código.

#include

#include

int main(){

int v[4][4];

int i, j, l1=0, l2=0, l3=0, l4=0, c1=0, c2=0, c3=0, c4=0, dp=0, ds=0;

for(i=0; i<4; i++){

for(j=0; j<4; j++){

scanf("%d", &v[i][j]);

}

}

for(i=0; i<4; i++){

for(j=0; j<4; j++){

if(i==0) l1+=v[i][j];

if(i==1) l2+=v[i][j];

if(i==2) l3+=v[i][j];

if(i==3) l4+=v[i][j];

if(j==0) c1+=v[i][j];

if(j==1) c2+=v[i][j];

if(j==2) c3+=v[i][j];

if(j==3) c4+=v[i][j];

if(i==j) dp+=v[i][j];

if(i==4-1-j || j==4-1-i) ds+=v[i][j];

}

}

printf("%d\n", l1);

printf("%d\n", l2);

printf("%d\n", l3);

printf("%d\n", l4);

printf("%d\n", c1);

printf("%d\n", c2);

printf("%d\n", c3);

printf("%d\n", c4);

printf("%d\n", dp);

printf("%d\n", ds);

if(l1== l2 && l2==l3 && l3==l4 && l4==c1 && c1==c2 && c2==c3 && c3==c4 && c4==dp && dp==ds){

puts("E um quadrado magico\n");

}

else{

puts("nao e");

}

return 0;

}

Portanto, temos então que o código acima verifica se uma matriz é um quadrado mágico ou não.

1
Dislike0
User badge image

Bea Silva

#include 

#include 

int main() {

       int i, j, n, soma, soma2, ** mat;

       printf("Digite a ordem da matriz, numero de colunas MxM 3x3 conforme ex:\n");

       scanf("%d", &n);

       while (n < 1) {

             printf("Digite novamente a ordem da matriz:\n");

             scanf("%d", &n);

       }

       mat = (int**)malloc(sizeof(int*) * n);

       if (mat == NULL) {

             printf("Problema na alocacao da matriz\n");

             return(-1);

       }

       for (i = 0; i < n; i++) {

             mat[i] = (int*)malloc(sizeof(int) * n);

             if (mat[i] == NULL) {

                    printf("Problema na alocacao da matriz\n");

                    return(-1);

             }

       }

       printf("Digite o elementos da matriz ex 8 0 7:\n");

       for (i = 0; i < n; i++) {

             for (j = 0; j < n; j++) {

                    scanf("%d", &(mat[i][j]));

             }

       }

       soma = 0;

       for (j = 0; j < n; j++) {

             soma = soma + mat[0][j];

       }

       for (i = 1; i < n; i++) {

             soma2 = 0;

             for (j = 0; j < n; j++) {

                    soma2 = soma2 + mat[i][j];

             }

 

             if (soma != soma2) {

                    printf("A matriz nao e um quadrado magico\n");

                    return(1);

             }

       }

       for (j = 0; j < n; j++) {

             soma2 = 0;

             for (i = 0; i < n; i++) {

                    soma2 = soma2 + mat[i][j];

             }

 

             if (soma != soma2) {

                    printf("A matriz nao e um quadrado magico\n");

                    return(1);

             }

       }

       soma2 = 0;

       for (i = 0; i < n; i++) {

             soma2 = soma2 + mat[i][i];

       }

       if (soma != soma2) {

             printf("A matriz nao e um quadrado magico\n");

             return(1);

       }

       soma2 = 0;

       for (i = 0; i < n; i++) {

             soma2 = soma2 + mat[i][n - (i + 1)];

       }

       if (soma != soma2) {

             printf("A matriz nao e um quadrado magico\n");

             return(1);

       }

       printf("A matriz e um quadrado magico\n");

       for (i = 0; i < n; i++) {

             free(mat[i]);

             mat[i] = NULL;

       }

       free(mat);

       mat = NULL;

       return(1);

}



Qualquer coisa só substituir os scanf por scanf_s
0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta

User badge image

Outros materiais