Documente Academic
Documente Profesional
Documente Cultură
Declararea unei matrice constă în specificarea celor două dimensiuni: numărul maxim de linii și numărul maxim de
coloane.
tip nume[numarLinii][numarColoane];
int a[3][4];
Observații
Matricea de mai sus are 3 * 4 = 12 elemente; o matrice cu n linii și m coloane are n * m elemente;
Practic, o matrice este un vector de vectori;
Liniile sunt indexate (numerotate) de la 0 la 2. Coloanele sunt indexate de la 0 la 3; cu toate acestea, ca la vectori,
putem să numerotăm indicii de la 1 în loc de 0, nelucrând cu elementele de pe linia/coloana 0.
Liniile sunt de sus în jos, iar coloanele sunt de la stânga la dreapta;
Memoria unei matrici crește exponențial: o matrice 1000 * 1000 este de 100 de ori mai mare decât una de 100 *
100.
Ca un fun fact pentru cei interesați, cum în memorie nu există noțiunea de 2D (adică toate informațiile din memorie sunt
consecutive, una după alta), o matrice cu n linii și m coloane se salvează ca o înșiruire de n * m elemente. Așadar, în
anumite medii de programare, apelând elementul de pe linia 0, coloana m, o să obținem elementul de pe linia 1, coloana 0
(deoarece matricea are coloane de la 0 la m - 1, coloana m este practic următorul element, adică de pe linia următoare și
coloana 0).
Spre exemplu, matricea de mai sus se reprezintă în memorie astfel: 1, 3, 6, 2, 2, 4, 12, 44, 0, 3, 5, 7.
Accesarea elementelor din matrice
Cum probabil ați intuit, pentru accesarea elementului de pe linia i și coloana j a unei matrici a, apelăm a[i][j]. Spre
exemplu, în matricea de mai sus, a[0][2] = 6.
Pentru a face acest lucru, vom folosi două structuri repetitive for imbricate (una în alta): prima după i, iar a doua după j.
Cea din afară (după i) va parcurge, pe rând, liniile matricei, de la 0 la n - 1. Pentru fiecare linie în parte, vom parcurge
elementele de la stânga la dreapta (de la 0 la m - 1) folosind al doilea for (care este după j). Astfel, reușim să parcurgem
toate elementele matricei cu ușurință.
Indexare de la 0
#include <iostream>
int main()
{
cin >> n >> m; //Citim numărul de linii și de coloane
Indexare de la 1
#include <iostream>
int main()
{
cin >> n >> m; //Citim numărul de linii și de coloane
Citirea matricei folosește parcurgerea de mai devreme pentru a lua elementele pe rând și a le citi de la tastatură. Iată un
exemplu:
Afișarea unui tablou este similară, însă după ce afișăm fiecare linie în parte, trebuie să afișăm un endl pentru a trece la
următoarea linie.
Exemplu
#include <iostream>
int main()
{
cin >> n >> m; //Citim numărul de linii și de coloane
//Citim matricea
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= m; j++) {
cin >> a[i][j];
}
}
//Afișăm matricea
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= m; j++) {
cout << a[i][j] << " ";
}
cout << "\n";
}
return 0;
}