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=a11a21⋮am1a12a22⋮am2……⋱…a1na2n⋮amn
Declararea și inițializarea unei matrice
- Declarare:
tip_de_date nume[rânduri][coloane];
- Ex.: int mat[3][4]; // Matrice cu 3 rânduri și 4 coloane.
- Inițializare:
- Directă:
int mat[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
- Implicită:
int mat[2][3] = {0}; // Toate elementele sunt 0.
- 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
- 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];
}
}
- 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];
}
}
- 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
- Scrieți un program care calculează suma tuturor elementelor dintr-o matrice.
- Implementați un program care determină transpunerea unei matrice pătratice.
- Realizați un program care înmulțește două matrice.
6. Scheme logice
- Inițializare și afișare a unei matrice:
- Start -> Inițializează matricea -> Traversează fiecare rând și coloană -> Afișează elementele -> Stop.
- 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.