Buongiorno e buona domenica a tutti.
Avrei bisogno di un aiuto sul seguente esercizio in C.
Il testo chiede inserite le dimensioni di una matrice, si devono generare i numeri casuali da 1 a n^2.
Fatto ciò bisogna verificare che la matrice generata sia un quadrato magico.
Tutto ciò il codice deve essere eseguito 1000 volte, e alla fine mi deve calcolare la probabilità che la matrice sia un quadrato magico.
Io ho due dubbi principali:
1) come inserire che i numeri vadano da 1 a n^2;
2) come eseguire il codice 1000 volte, e ogni volta memorizzare se è un quadrato magico, per poi poter calcolare la probabilità:
Ovviamente se ci sono altri errori nel codice segnalatemeli pure.
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
int main ()
{
int array[10][10];
int i, j, m, n, y, l, sum,sumcol, sumdiag,smd=0;
int prob;
printf("inserisci le dimensioni della matrice\n");
scanf("%d %d", &m, &n);
for(y=0;y<10;y++){
srand((unsigned)time(NULL));
for (i=0; i<n; i++)
for (j=0; j<m; j++)
array[i][j] = rand()%10;
for (i = 0; i < m; ++i)
{
sum=0;
for (j = 0; j < n; ++j)
{
sum = sum + array[i][j] ;
}
}
for (j = 0; j < n; ++j)
{
sumcol=0;
for (i = 0; i < m; ++i)
{
sumcol = sumcol + array[i][j];
}
}
sumdiag = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
if(i==j){
sumdiag=sumdiag+array[i][j];
}
}
}
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if(i + j == n-1)
smd=smd + array[i][j];
}
}
if(sum==sumcol==sumdiag==smd){
l=1;
}else{
l=0;
}
prob=l/10*100;
printf("%d ", prob);
}
system("pause");
return 0;
}
Scusate il post domenicale ed eventuali errori, ma sono un neofita.
Grazie