Programowanie i algorytmy

Dodawanie macierzy

Zadanie 4. Napisz program, który doda do siebie dwie macierze o wymiarach 2 x 3.

 

Rozwiązanie

Macierz to obiekt w matematyce, który składa się z pewnej ilości wierszy i kolumn. Każdy wiersz posiada taką samą ilość wartości. Aby odwołać się do jakiegoś elementu musimy podać jego współrzędne - najpierw numer wiersza, następnie numer kolumny. Popatrzmy przykład macierzy o wymiarach 5 x 6:

{tex}A = \begin{bmatrix} 1 & 2 & 4 & 3 & 1 & 90 \\ 4 & -1 & -3 & 0 & 4 & 87 \\ 3 & 4 & 4 & 4 & 4 & 4\\ 0 & 9 & 98 & 8 & 9 & 0\\ 0 & 98 & 8 &9 & 8 & 4 \end{bmatrix} {/tex}

I tak np. wartość komórki {tex} a_{2, 3} = -3{/tex}, a komórki {tex} a_{1 , 1} = 1{/tex}.

W C++ macierz zapamiętamy w tablicy dwuwymiarowej A[2][3]. Pamiętajmy, że indeksowanie komórek zaczynamy od 0, czyli komórka {tex} a_{2, 3} {/tex} ma indeksy zmniejszone o jeden: A[1][2].

Dodając do siebie macierze dodajemy ich odpowiadające wartości. Popatrzmy na przykład dodania do siebie dwóch macierzy o wymiarach 3 x 3:

{tex}\begin{bmatrix} 2 & 2 & 3\\ 1 & -1 & 0\\ 4 & 6 & 2 \end{bmatrix} + \begin{bmatrix} 1 & 0 & 5\\ 2 & 1 & 2\\ 7 & 8 & -2 \end{bmatrix} = \begin{bmatrix} 2+1 & 2+0 & 3+5\\ 1+2 & -1+1 & 0+2\\ 4+7 & 6+8 & 2-2 \end{bmatrix} = \begin{bmatrix} 3 & 2 & 8\\ 3 & 0 & 2\\ 11 & 14 & 0 \end{bmatrix}{/tex}

 

Macierze możemy dodawać do siebie tylko w przypadku gdy mają te same wymiary.

 

Rozwiązanie

#include<iostream>
using namespace std;
 
int main()
{
  const int a = 2, b = 3;
  int A[a][b], B[a][b], W[a][b];
 
 
  //wczytanie wartości pierwszej macierzy
    for(int i=0;i<a;i++) //pętla odpowiedzialna za wiersze
      for(int j=0;j<b;j++) //pętla odpowiedzialna za ilość liczb w wierszu
        cin>>A[i][j]; //wczytanie elementów pierwszej macierzy
 
  //wczytanie wartości drugiej macierzy
    for(int i=0;i<a;i++)
      for(int j=0;j<b;j++)
      {
          cin>>B[i][j];
        W[i][j] = A[i][j] + B[i][j]; //dodanie do siebie macierzy A i B
      }
 
  //prezentacja wyniku
 
    for(int i=0;i<a;i++)
    {
      for(int j=0;j<b;j++)
        cout<<W[i][j]<<" ";
      cout<<endl; //oddzielenie wierszy znakiem nowej linii
    }
 
  return 0;
}
 
 

 

Przykładowe wejście

1 2 3
3 3 4

3 3 4
2 3 4

 

Wyjście

4 5 7 
5 6 8 

powrót