# PBinfo #1395 – MSuma – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

Cerința
Se dau două matrice cu elemente numere întregi. Calculați suma lor.

Date de intrare
Fișierul de intrare msuma.in conține pe prima linie numerele n m, reprezentând dimensiunile primei matrice. Urmează n linii cu câte m valori, elementele primei matrice.

Linia n+2 conține numerele p q, reprezentând dimensiunile celei de-a doua matrice. Urmează p linii cu câte q valori, elementele celei de-a doua matrice.

Date de ieșire
Fișierul de ieșire msuma.out va conține pe prima linie numerele S T, reprezentând dimensiunile matricei sumă. Următoarele S linii vor conține câte T valori separate prin exact un spațiu, reprezentând valorile din matricea sumă.

Restricții și precizări

1 ≤ n , m , p , q ≤ 100;
valoarea absolută a elementelor fiecărei matrice vor fi mai mici decât 1.000.000.000;
adunarea matricelor se poate efectua pentru fiecare test.

Exemplu:
msuma.in

3 4
2 1 4 6 
5 -8 5 5 
2 5 -2 4 
3 4
3 7 -5 0 
1 -4 1 5 
-4 2 8 7 
msuma.out

3 4
5 8 -1 6 
6 -12 6 10 
-2 7 6 11

## Cod sursă C++

```cpp
#include <iostream>
#include <fstream>
using namespace std;
#define NN 103
ifstream fin ("msuma.in");
ofstream fout("msuma.out");
struct Matrice{
    int nrLin, nrCol;
    int Tablou[NN][NN];
};
void Citire(Matrice &A, istream & in)
{
    in >> A.nrLin >> A.nrCol;
    for(int i = 1 ; i <= A.nrLin ; i ++)
        for(int j = 1 ; j <= A.nrCol ; j ++)
            in >> A.Tablou[i][j];
}
void Afisare(Matrice A, ostream & out)
{
    out << A.nrLin << " " << A.nrCol << endl;
    for(int i = 1 ; i <= A.nrLin ; i ++)
    {
        for(int j = 1 ; j <= A.nrCol ; j ++)
            out << A.Tablou[i][j] << " ";
        out << endl;
    }
}
Matrice Suma(Matrice A, Matrice B)
{
    Matrice S;
    S.nrLin = A.nrLin, S.nrCol = A.nrCol;
    for(int i = 1 ; i <= A.nrLin ; i ++)
        for(int j = 1 ; j <= A.nrCol ; j ++)
            S.Tablou[i][j] = A.Tablou[i][j] + B.Tablou[i][j];
    return S;
}
int main()
{
    Matrice A, B, S;
    Citire(A, fin); 
    Citire(B, fin);
    S = Suma(A , B);
    Afisare(S, fout);
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/1395)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/1395/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-1395/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
