Răspuns:
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("mat.in");
int a[100][100],n,i,j;
void citire(int a[100][100],int &n)
{
f>>n;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
f>>a[i][j];
}
int suma(int n)
{
int s=0;
while(n)
{
s=s+n%10;
n=n/10;
}
return s;
}
int edivizibil(int n,int m)
{
return n%m==0;
}
void numar()
{
int k=-1;
for(i=1; i<=n; i++)
{
if(edivizibil(a[i][i],suma(a[i][i])) && a[i][i]>k)
k=a[i][i];
}
if(k==-1)
cout<<"Nu exista un numar cu proprietatea ceruta!";
else
cout<<"Cel mai mare numar divizibil cu suma cifrelor lui situat pe diagonala principala este: "<<k;
}
int main()
{
citire(a,n);
numar();
return 0;
}
Explicație: