Сума матриць#9536

Сума матриць (Розбір)

По заданим матрицям і знаходимо їх суму — матрицю , де

С_{ij} = A_{ij} + B_{ij}

Реалізація алгоритму

Оголосимо матриці і .

#define MAX 101
int a[MAX][MAX], b[MAX][MAX], c[MAX][MAX];

Читаємо вхідні дані — матриці і .

scanf("%d %d", &n, &m);
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
  scanf("%d", &a[i][j]);

for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
  scanf("%d", &b[i][j]);

Вираховуємо суму матриць C = A + B.

for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
  c[i][j] = a[i][j] + b[i][j];

Виводимо результуючу матрицю.

for (i = 0; i < n; i++)
{
  for (j = 0; j < m; j++)
    printf("%d ", c[i][j]);
  printf("\n");
}

Реалізація алгоритму – подвійний вказівник

Оголосимо матриці , і як подвійні вказівники:

int **a, **b, **c;

Функція Read читає матрицю .

void Read(int **&matr, int n, int m)
{
  matr = new int* [n];
  for (i = 0; i < n; i++)
  {
    matr[i] = new int[m];
    for (j = 0; j < m; j++)
      scanf("%d", &matr[i][j]);
  }
}

Функція Sum вираховує суму матриць A + B і зберігає її в матриці .

void Sum(int **a, int **b, int **&c, int n, int m)
{
  c = new int* [n];
  for (i = 0; i < n; i++)
  {
    c[i] = new int[m];
    for (j = 0; j < m; j++)
       c[i][j] = a[i][j] + b[i][j];
  }
}

Функція Print виводить матрицю .

void Print(int **a)
{
  for (i = 0; i < n; i++)
  {
    for (j = 0; j < m; j++)
      printf("%d ", a[i][j]);
    printf("\n");
  }
}

Основна частина програми. Читаємо розміри матриць і .

scanf("%d %d", &n, &m);

Читаємо матриці і .

Read(a, n, m);
Read(b, n, m);

Вираховуємо суму матриць C = A + B.

Sum(a, b, c, n, m);

Виводимо результуючу матрицю.

Print(c);