|

Tablouri Bidimensionale (Matrice) în C++ 27


1. Obiectivele lecției:

  • Să înțeleagă conceptul de tablouri bidimensionale (matrice).
  • Să implementeze programe care utilizează matrice.
  • Să învețe operații de bază asupra matricei, cum ar fi inițializarea, accesarea elementelor și traversarea.

2. Conținutul lecției:


Ce este un tablou bidimensional?

  • Definiție: Un tablou bidimensional este o structură de date care stochează elemente în rânduri și coloane, similar unei matrice matematice.
  • Forma: Matricea este definită prin două dimensiuni: numărul de rânduri și numărul de coloane.
  • Reprezentare:
    • Matrice A cu m rânduri și n coloane: A=[a11 a12…a1n a21 a22…a2n⋮⋮⋱⋮am1am2…amn]
    • A=​a11​a21​⋮am1​​a12​a22​⋮am2​​……⋱…​a1n​a2n​⋮amn​​​

Declararea și inițializarea unei matrice

  1. Declarare:

tip_de_date nume[rânduri][coloane];

  1. Ex.: int mat[3][4]; // Matrice cu 3 rânduri și 4 coloane.
  2. Inițializare:
    • Directă:

int mat[2][3] = {

    {1, 2, 3},

    {4, 5, 6}

};

  1. Implicită:

int mat[2][3] = {0}; // Toate elementele sunt 0.

  1. Accesarea unui element:

mat[i][j]; // Accesarea elementului de la rândul i și coloana j.


Traversarea unei matrice

Pentru a traversa toate elementele unei matrice, folosim bucle imbricate:

for (int i = 0; i < rânduri; i++) {

    for (int j = 0; j < coloane; j++) {

        // Operații asupra mat[i][j]

    }

}


3. Cod în C++


Exemplu 1: Inițializare și afișare a unei matrice

#include <iostream>

using namespace std;

void afisareMatrice(int mat[][3], int rânduri, int coloane) {

    for (int i = 0; i < rânduri; i++) {

        for (int j = 0; j < coloane; j++) {

            cout << mat[i][j] << ” „;

        }

        cout << endl;

    }

}

int main() {

    int mat[2][3] = {

        {1, 2, 3},

        {4, 5, 6}

    };

    cout << „Matricea este:” << endl;

    afisareMatrice(mat, 2, 3);

    return 0;

}


Exemplu 2: Citirea unei matrice și afișarea acesteia

#include <iostream>

using namespace std;

void citireMatrice(int mat[][3], int rânduri, int coloane) {

    cout << „Introduceti elementele matricei:” << endl;

    for (int i = 0; i < rânduri; i++) {

        for (int j = 0; j < coloane; j++) {

            cout << „Element [” << i << „][” << j << „]: „;

            cin >> mat[i][j];

        }

    }

}

void afisareMatrice(int mat[][3], int rânduri, int coloane) {

    cout << „Matricea este:” << endl;

    for (int i = 0; i < rânduri; i++) {

        for (int j = 0; j < coloane; j++) {

            cout << mat[i][j] << ” „;

        }

        cout << endl;

    }

}

int main() {

    const int rânduri = 2;

    const int coloane = 3;

    int mat[rânduri][coloane];

    citireMatrice(mat, rânduri, coloane);

    afisareMatrice(mat, rânduri, coloane);

    return 0;

}


Exemplu 3: Adunarea a două matrice

#include <iostream>

using namespace std;

void citireMatrice(int mat[][3], int rânduri, int coloane) {

    for (int i = 0; i < rânduri; i++) {

        for (int j = 0; j < coloane; j++) {

            cin >> mat[i][j];

        }

    }

}

void adunareMatrice(int mat1[][3], int mat2[][3], int rezultat[][3], int rânduri, int coloane) {

    for (int i = 0; i < rânduri; i++) {

        for (int j = 0; j < coloane; j++) {

            rezultat[i][j] = mat1[i][j] + mat2[i][j];

        }

    }

}

void afisareMatrice(int mat[][3], int rânduri, int coloane) {

    for (int i = 0; i < rânduri; i++) {

        for (int j = 0; j < coloane; j++) {

            cout << mat[i][j] << ” „;

        }

        cout << endl;

    }

}

int main() {

    const int rânduri = 2, coloane = 3;

    int mat1[rânduri][coloane], mat2[rânduri][coloane], rezultat[rânduri][coloane];

    cout << „Introduceti elementele primei matrice:” << endl;

    citireMatrice(mat1, rânduri, coloane);

    cout << „Introduceti elementele celei de-a doua matrice:” << endl;

    citireMatrice(mat2, rânduri, coloane);

    adunareMatrice(mat1, mat2, rezultat, rânduri, coloane);

    cout << „Rezultatul adunarii este:” << endl;

    afisareMatrice(rezultat, rânduri, coloane);

    return 0;

}


4. Operații comune asupra matricelor

  1. Determinarea sumei elementelor:

int suma = 0;

for (int i = 0; i < rânduri; i++) {

    for (int j = 0; j < coloane; j++) {

        suma += mat[i][j];

    }

}

  1. Transpunerea unei matrice:

int transpusa[coloane][rânduri];

for (int i = 0; i < rânduri; i++) {

    for (int j = 0; j < coloane; j++) {

        transpusa[j][i] = mat[i][j];

    }

}

  1. Determinarea elementului maxim:

int maxim = mat[0][0];

for (int i = 0; i < rânduri; i++) {

    for (int j = 0; j < coloane; j++) {

        if (mat[i][j] > maxim) {

            maxim = mat[i][j];

        }

    }

}


5. Activități practice pentru elevi

  1. Scrieți un program care calculează suma tuturor elementelor dintr-o matrice.
  2. Implementați un program care determină transpunerea unei matrice pătratice.
  3. Realizați un program care înmulțește două matrice.

6. Scheme logice

  1. Inițializare și afișare a unei matrice:
    • Start -> Inițializează matricea -> Traversează fiecare rând și coloană -> Afișează elementele -> Stop.
  2. Adunarea a două matrice:
    • Start -> Traversează matricele element cu element -> Adună valorile corespunzătoare -> Afișează rezultatul -> Stop.

7. Concluzie:

  • Matricele sunt o componentă esențială în programarea C++, utilizate în domenii precum procesarea imaginilor, grafica pe calculator sau calcul numeric.
  • Înțelegerea operațiilor de bază asupra matricelor este un pas important pentru rezolvarea problemelor complexe.

Similar Posts

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *