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?
Sofrir mas conseguir.
#include <stdio.h>
#include <stdlib.h>
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);
}
Achei na net o codigo meritos não são meus.
#include
#include
int main () {
int i, j,lin,col;
printf ("Digite as dimensoes da matriz:\n");
scanf ("%d %d", &lin, &col);
int matriz[lin][col], somalin[col], somacol[lin],somadiag1=0, somadiag2=0, aux=0;
printf ("Digite os elementos: \n");
for (i=0; i for (j=0; j scanf ("%d", &matriz[j]); } } for (i=0; i for (j=0; j aux += matriz [j]; } somalin = aux; aux = 0; } for (i=0; i for (j=0; j aux += matriz [j]; } somacol = aux; aux = 0; } for (i=0; i aux += matriz ; somadiag1 += aux; aux = 0; } j = 0; for (i=col - 1; i<=0; i--) { aux += matriz [j]; somadiag2 += aux; aux = 0; j++; } if (somadiag1 != somadiag2){ printf ("Nao eh quadrado magico!\n"); return 0; } for (i=0; i if (somalin =! somacol){ printf ("Nao eh quadrado magico!\n"); return 0; } } if (somalin[0] != somadiag1){ printf ("Nao eh quadrado magico!\n"); return 0; } printf ("A matriz é um quadrado magico!\n"); system ("PAUSE"); return 0; }
Para escrever sua resposta aqui, entre ou crie uma conta
Lógica de Programação e Algoritmos
•UNINTER
Compartilhar