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:
$$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} $$
I tak np. wartość komórki $$ a_{2, 3} = -3$$, a komórki $$ a_{1 , 1} = 1$$.
W C++ macierz zapamiętamy w tablicy dwuwymiarowej A[2][3]. Pamiętajmy, że indeksowanie komórek zaczynamy od 0, czyli komórka $$ a_{2, 3} $$ 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:
$$\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}$$
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