#include <stdio.h>
#define DIM 3
void leggiMatrice(int m[DIM][DIM])
{
int i, j;
printf("Inserire gli elementi di una matrice di interi %dx%d\n", DIM, DIM);
for (i = 0; i < DIM; i++)
for (j = 0; j < DIM; j++)
scanf("%d", &m[i][j]);
}
void stampaMatrice(int m[DIM][DIM])
{
int i, j;
for (i = 0; i < DIM; i++) {
for (j = 0; j < DIM; j++)
printf("%5d", m[i][j]);
printf("\n");
}
}
int sommaRiga(int m[DIM][DIM], int riga)
{
int j, somma = 0;
for (j = 0; j < DIM; j++)
somma += m[riga][j];
return somma;
}
int sommaColonna(int m[DIM][DIM], int colonna)
{
int i, somma = 0;
for (i = 0; i < DIM; i++)
somma += m[i][colonna];
return somma;
}
int sommaDiagonale(int m[DIM][DIM], int principale)
{
int i, somma = 0;
if (principale)
for (i = 0; i < DIM; i++)
somma += m[i][i];
else
for (i = 0; i < DIM; i++)
somma += m[i][DIM-i-1];
return somma;
}
int magica(int m[DIM][DIM])
{
int i, somma;
int mag = 1;
somma = sommaDiagonale(m, 1);
mag = (somma == sommaDiagonale(m, 0));
for (i = 0; (i < DIM && mag); i++)
if (somma != sommaRiga(m, i) || somma != sommaColonna(m, i))
mag = 0;
return mag;
}
int main(void)
{
int mat[DIM][DIM];
leggiMatrice(mat);
printf("La matrice\n");
stampaMatrice(mat);
if (magica(mat))
printf("e` magica.\n");
else
printf("non e` magica.\n");
return 0;
}