Să se scrie o aplicaţie C/C++, care alocă dinamic memorie pentru stocarea
elementelor a două matrici de "m" linii şi "n" coloane. Să se scrie o funcţie care
calculează suma celor două matrici şi o funcţie pentru afişarea unei matrici. Să se
afişeze matricile iniţiale şi matricea obţinută dupa adunare.
Răspunsuri la întrebare
Răspuns:
#include <stdio.h>
#include <stdlib.h>
// Dimenisiunile matricelor
#define M 3
#define N 4
// Functie pentru citirea unei matrici de la tastatura
void read_matrix(int **matrix) {
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
printf("Elementul[%d][%d]: ", i, j);
scanf("%d", &matrix[i][j]);
}
}
}
// Functie pentru afisarea unei matrici
void print_matrix(int **matrix) {
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
// Functie pentru calcularea sumei a doua matrici
void sum_matrices(int **matrix1, int **matrix2, int **result) {
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
result[i][j] = matrix1[i][j] + matrix2[i][j];
}
}
}
int main(void) {
// Alocam memorie pentru matricile de m x n elemente
int **matrix1 = (int **)malloc(M * sizeof(int *));
int **matrix2 = (int **)malloc(M * sizeof(int *));
int **result = (int **)malloc(M * sizeof(int *));
for (int i = 0; i < M; i++) {
matrix1[i] = (int *)malloc(N * sizeof(int));
matrix2[i] = (int *)malloc(N * sizeof(int));
result[i] = (int *)malloc(N * sizeof(int));
}
// Citim matricile de la tastatura
printf("Matricea 1:\n");
read_matrix(matrix1);
printf("Matricea 2:\n");
read_matrix(matrix2);
// Calculam suma matricelor
sum_matrices(matrix1, matrix2, result);
// Afisam matricile
printf("Matricea 1:\n");
print_matrix(matrix1);
printf("Matricea 2:\n");
print_matrix(matrix2);
printf("Suma matricelor:\n