Rezolvare completă PbInfo #1396 MDiferenta

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 

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema MDiferenta:

#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;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #1396 MDiferenta

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1396 MDiferenta de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!