Ho un problema quando faccio il controllo della somma tra la diagonale e la riga per verificare se la matrice è un quadrato magico o no. Ho provato anche a fare due controlli tipo se la somma righe e colonne è uguale AND la somma delle diag princ e sec è uguale allora è magico...risultato errato. Compilate l'algoritmo e inserite i seguenti valori 2 7 6 9 5 1 4 3 8
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
int main ()
{
static int array[10][10];
int i, j, m, n, sum,sumcol, sumdiag,smd=0;
printf("inserisci le dimensioni della matrice\n");
scanf("%d %d", &m, &n);
printf("inserisci i numeri\n");
for (i = 0; i < m; ++i)
{
for (j = 0; j < n; ++j)
{
scanf("%d", &array[i][j]);
}
}
//stampa arr
for (i = 0; i < m; ++i)
{
printf("\n");
for (j = 0; j < n; ++j)
{
printf("|%d|",array[i][j]);
}
}
//somma righe
sum=0;
for (i = 0; i < m; ++i)
{
for (j = 0; j < n; ++j)
{
sum = sum + array[i][j] ;
}
printf("\nla somma della riga %d e' = %d\n", i, sum);
sum=0;
}
//somma colonn
sumcol = 0;
for (j = 0; j < n; ++j)
{
for (i = 0; i < m; ++i)
{
sumcol = sumcol + array[i][j];
}
printf("la somma della colonna %d e' = %d\n", j, sumcol);
sumcol=0;
}
//somm diag princ
sumdiag = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
if(i==j){
sumdiag=sumdiag+array[i][j];
}
}
}
printf("la somma della diag princ e' = %d\n",sumdiag);
//somm diag sec
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if(i + j == n-1)
smd=smd + array[i][j];
}
}
printf("\nla somma della diag sec e' = %d",smd);
//è magico? 1 se VERO 0 se FALSO
if(sum==sumdiag){
printf("\nla matrice restituisce %d\n",TRUE);
}
else{
printf("\nla matrice restituisce %d\n",FALSE);
}
system("pause");
return 0;
}