luni, 12 octombrie 2015

Prelucrarea tablourilor bidimensionale în Java

 Ce este o matrice?

O matrice este o colecție de elemente de același tip, organizate în formă de tabel în care fiecare element este indexat de o pereche de numere ce identifică numărul de rând și numărul de coloană la intersecția cărora se află elementul.
În Java o matrice este formată din mai mulți vectori fiecare reprezentând cîte un rând din matrice și mai este numită vector de vectori.

Cum se declară o matrice?
O matrice se declară în felul următor (asemănător ca la vectori):
int[][] m; // declarația unui vector de vectori

Cum se crează o matrice?
Înainte de a folosi o matrice aceasta trebuie creată, la fel ca vectorii. De exemplu, următoarele doua secvențe de creare a unei matrici sunt echivalente:
m = new int[3][]; //se crează un vector ce va conține 3 elemente, fiecare conținând
                                           // cîte o referință la un rând din matrice.
m[0] = new int[5]; // se crează un rândul 0 din matrice (5 coloane)
m[1] = new int[5]; // se crează un rândul 1 din matrice (5 coloane)
m[2] = new int[5]; // se crează un rândul 2 din matrice (5 coloane)

                                                                                    <=>                                  
m = new int [3][5];
Rețineți faptul că, dacă utilizați cea dea doua modalitate forțați toate rândurile să conțină 5 coloane, pe când folosind prima modalitate rândurile pot avea număr de coloane diferit.
Observați în exemplul următor: 
Cum se accesează elementele unei matrici?
Pentru a accesa un element este necesar de a specifica indicele de rând și coloană la intersecția căruia se află elementul folosind construcția:

variabila_matrice[indice_rînd][indice_coloană]
Exemplu:
int[][] m = new int [3][5];
m[1][2] = 39; // se atribuie elementului din rândul 1 coloana 2 valoarea 39
m[0][0] = 44;  // se atribuie elementului din rândul 0 coloana 0 valoarea 44
System.out.println(m[1][2]); // se accesează elementul din rândul 1 coloana 2, se afișează 39

Cum depistați dimensiunea unei matrici?
Folosind variabila length,  aveți posibilitatea de a obține numărul de rânduri și coloane a matricei. Fie ca este o referință către o matrice, atunci:
  ü  m.length denotă numărul de rânduri
  ü  m[i].length denotă numărul de coloane a rândului din matricea m.
Rețineți faptul că, dacă toate rândurile au același număr de coloane puteți folosi expresia m[i].length.
De exemplu:
double[][] v;
v = new double[15][20];
System.out.println(v.length); // afișează 15
System.out.println(v[0].length); // afișează 20

Cum parcurgem elementele unei matrici?

public class Parcurgere {
 public static void main(String[] args) {
  int [][] m = new int[2][2];
   m[0][0] = 2; m[0][1] = 4;
   m[1][0] = 3; m[1][1] = 5;
  for (int i = 0; i < m.length; i++) {
   for (int j = 0; j < m[0].length; j++)
      System.out.print(m[i][j] + " "); 
  System.out.println();
  }
}}

public class parcurgere1 {
 public static void main(String[] args) {
  int [][] m = { {2,4},
                  {3,5} };
  for (int i = 0; i < m.length; i++) {
   for (int j = 0; j < m[0].length; j++)
      System.out.print(m[i][j] + " "); 
  System.out.println();
  }}}