👤
a fost răspuns

Din fisierul matrice.in se citeste un numar natural n (n<=10) si apoi se citeste o matrice patratica cu n linii si n coloane avand elemente numere naturale cu cel mult 2 cifre fiecare. Afisati in fisierul matrice.out elementele de pe diagonala principala a matricei care au proprietatea ca sunt egale cu cel mai mare divizor comun al sumei de pe linia si al produsului de pe coloana pe care se afla.
Se vor scrie si folosi functii pentru:
- citirea matricei
- calculul cmmdc
- calculul sumei elementelor de pe o linie a matricei
- calculul produsului elementelor de pe o coloana a matricei


Răspuns :

#include <iostream>

#include<fstream>

using namespace std;

int a[100][100],n;

void citire()

{

   ifstream f("matrice.in");

   f>>n;

   int i,j;

   for(i=1; i<=n; i++)

       for(j=1; j<=n; j++)

           f>>a[i][j];

}

int cmmdc(int a,int b)

{

   int r;

   while(b!=0)

   {

       r=a%b;

       a=b;

       b=r;

       return a;

   }

}

int suma(int x)

{

   int i,s=0;

   for(i=1; i<=n; i++)

       s=s+a[x][i];

   return s;

}

int produs(int y)

{

   int i,p=1;

   for(i=1; i<=n; i++)

       p=p*a[i][y];

   return p;

}

int main()

{

   citire();

   ofstream g("matrice.out");

   for(int i=1; i<=n; i++)

       for(int j=1; j<=n; j++)

           if(i==j&&a[i][j]==cmmdc(suma(i),produs(j)))

               g<<a[i][j]<<" ";

}