Informatică, întrebare adresată de vargad682, 8 ani în urmă

Să se scrie o aplicaţie C/C++, care alocă dinamic memorie pentru stocarea
elementelor unei matrici patrate de dimensiune nxn. Să se scrie o funcţie care
calculează suma numerelor pozitive pare de sub diagonala principală şi o funcţie
pentru afişarea matricei. Să se afişeze matricea şi suma cerută. Eliberaţi memoria
alocată dinamic.

Răspunsuri la întrebare

Răspuns de Rayzen
0

#include <iostream>

#include <cstdlib>

using namespace std;

// dimensiunea matricei patrate

const int N = 4;

// funcţia care alocă dinamic memorie pentru matricea patrată

int** allocateMatrixMemory()

{

   // alocăm memorie pentru matricea patrată

   int** matrix = new int*[N];

   for (int i = 0; i < N; i++)

       matrix[i] = new int[N];

   // întoarcem matricea

   return matrix;

}

// funcţia care eliberează memoria alocată dinamic pentru matricea patrată

void freeMatrixMemory(int** matrix)

{

   // eliberăm memoria pentru fiecare rând al matricei

   for (int i = 0; i < N; i++)

       delete[] matrix[i];

   // eliberăm memoria pentru matrice în sine

   delete[] matrix;

}

// funcţia care calculează suma numerelor pozitive pare de sub diagonala principală a matricei

int sumOfEvenPositiveNumbersUnderMainDiagonal(int** matrix)

{

   int sum = 0;

   // parcurgem fiecare element de sub diagonala principală

   for (int i = 0; i < N; i++)

   {

       for (int j = 0; j < i; j++)

       {

           // adăugăm numărul la sumă dacă este pozitiv şi par

           if (matrix[i][j] > 0 && matrix[i][j] % 2 == 0)

               sum += matrix[i][j];

       }

   }

   // întoarcem suma

   return sum;

}

// funcţia care afişează matricea

void printMatrix(int** matrix)

{

   // parcurgem fiecare element al matricei

   for (int i = 0; i < N; i++)

   {

       for (int j = 0; j < N; j++)

           cout << matrix[i][j] << " ";

       cout << endl;

   }

}

int main()

{

   // alocăm dinamic memorie pentru matricea patrată

   int** matrix = allocateMatrixMemory();

   // iniţializăm matricea cu valori

   matrix[0][0] = 1; matrix[0][1] = 2; matrix[0][2] = 3; matrix[0][3] = 4;

   matrix[1][0] = 5; matrix[1][1] = 6; matrix[1][2] = 7; matrix[1][3] = 8;

   matrix[2][0] = 3; matrix[2][1] = 4; matrix[2][2] = 5; matrix[2][3] = 6;

   matrix[3][0] = 5; matrix[3][1] = 8; matrix[3][2] = 2; matrix[3][3] = 7;

   

   int suma = sumOfEvenPositiveNumbersUnderMainDiagonal(matrix);

   // afisam matricea

   printMatrix(matrix);

   cout << endl;

   // afisam suma

   cout << suma;

   // eliberam memoria matricei

   freeMatrixMemory(matrix);

}

Alte întrebări interesante