# PBinfo #1396 – MDiferenta – Rezolvare C++

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

## Enunț

Cerința
Se dau două matrice cu elemente numere întregi. Calculați diferența dintre prima și a doua matrice.

Date de intrare
Fișierul de intrare mdiferenta.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 mdiferenta.out va conține pe prima linie numerele S T, reprezentând dimensiunile matricei diferență. Următoarele S linii vor conține câte T valori separate prin exact un spațiu, reprezentând valorile din matricea diferență.

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;
scăderea matricelor se poate efectua pentru fiecare test.

Exemplu:
mdiferenta.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 
mdiferenta.out

3 4
-1 -6 9 6 
4 -4 4 0 
6 3 -10 -3

## Cod sursă C++

```cpp
#include <iostream>
#include <fstream>
using namespace std;
#define NN 103
ifstream fin ("mdiferenta.in");
ofstream fout("mdiferenta.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 Diferenta(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 = Diferenta(A , B);
    Afisare(S, fout);
    return 0;
}
```

## Resurse

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