Quadrato Magico help

di il
2 risposte

Quadrato Magico help

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;
}

2 Risposte

  • Re: Quadrato Magico help

    Sum=0; e sumcol=0;

    devono stare tra le due for altrimenti non vengono azzerate ad ogni calcolo di somma righe / colonne
  • Re: Quadrato Magico help

    Grazie mille oregon, sei il nostro salvatore
Devi accedere o registrarti per scrivere nel forum
2 risposte