numerele trebuie să fie diferite si pătrate perfecte
toate sa aiba aceeași sumă pe orizontală verticala si diagonala
Răspunsuri la întrebare
#include <iostream>
#include <cmath>
using namespace std;
int pp(int x)
{
if (sqrt(x)==(int)(sqrt(x)))
return 1;
else
return 0;
}
int main()
{
int n,i,j,a[101][101],S_ref=0,S1,S2,S3,ok1=1,ok2;
cin>>n;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
cin>>a[i][j];
i=1;
do{
j=1;
do{
if (pp(a[i][j])==0)
ok1=0;
j++;
}
while (ok1==1 && j<=n);
i++;
}
while (ok1==1 && i<=n);
if (ok1)
{
S3=0;
ok2=1;
for (i=1;i<=n;i++)
S_ref=S_ref+a[i][i];
for (i=1;i<=n;i++){
S1=0;S2=0;
for (j=1;j<=n;j++)
{
S1=S1+a[i][j];
S2=S2+a[j][i];
if (i+j==n+1)
S3=S3+a[i][j];
}
if (S1!=S_ref || S2!=S_ref)
ok2=0;
}
if (ok2==1 && S3!=S_ref)
ok2=0;
}
if (ok2==1)
cout<<"Matrice OK";
else
cout<<"Not OK";
return 0;
}