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
#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);
}