Răspuns :

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: