Kurs maturalny z języka angielskiego!
kurs-maturalny-jezyk-angielski

PROGRAMOWANIE I ALGORYTMY

Zajęcia maturalne z informatyki
Olimpiada Informatyczna Juniorów
    Prowadzący: Marcin Kasprowicz
  • właściciel serwisu algorytm.edu.pl
  • wrzesień 2024 — start zajęć
  • czytaj więcej

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:

$$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