Conectează-te Înregistrare gratuită
Informatică Liceu (9-12)

Tabouri unidimensionale (vectori) si bidimensionale (matrice)

Pe scurt

Un tablou (array) este o structură de date omogenă care stochează elemente de același tip în locații de memorie consecutive. Tablourile unidimensionale (vectori) și bidimensionale (matrice) sunt esențiale pentru reprezentarea și prelucrarea datelor în algoritmică. Înțelegerea indexării corecte și a operațiilor de bază (citire, afișare, sortare, căutare) este crucială pentru rezolvarea problemelor la Bacalaureat.

Declararea și accesarea tablourilor

Vectorii (tablouri unidimensionale) se declară astfel: tip nume[dimensiune], de exemplu int v[100]. Accesul la elemente se face prin index, începând de la 0 (v[0], v[1], ..., v[n-1]).

Matricele (tablouri bidimensionale) se declară: tip nume[nr_randuri][nr_coloane], de exemplu int mat[10][20]. Elementul de pe rândul i și coloana j se accesează cu mat[i][j].

Parcurgerea tablourilor

  • Parcurgerea unui vector se realizează cu instrucțiuni repetitive (for, while).
  • Parcurgerea unei matrice se face cu două bucle (una pentru rânduri, una pentru coloane).

Operații frecvente pe vectori

  • Operații de bază: inițializare, citire, afișare
  • Căutare: liniară sau binară
  • Sortare: bubble sort, selection sort, insertion sort, quick sort
  • Prelucrare elemente: sumă, medie, maxim, minim

Operații frecvente pe matrice

  • Operații de bază: citire, afișare, transpunere
  • Operații aritmetice: adunarea/înmulțirea matricilor (pentru matrici pătratice)
  • Prelucrări specifice: calculul sumelor pe rânduri sau coloane, determinarea elementelor minime/maxime pe diagonale

Aspecte avansate

  • Tablourile pot fi transmise ca parametri către funcții
  • Se pot folosi pointeri pentru acces dinamic
  • În probleme avansate se întâlnesc tablouri multidimensionale (3D, 4D) și alocare dinamică
  • Concepte cheie: Vector (tablou unidimensional) - declarare, indexare, parcurgere; Matrice (tablou bidimensional) - rânduri, coloane, parcurgere dublu-buclată; Operatii de bază: citire, afișare, sumă, maxim, minim; Sortare (bubble sort, selection sort) și căutare (liniară, binară); Transmiterea tablourilor ca parametri funcții

Exemple concrete

Exemplul 1: Citirea și afișarea unui vector de n numere întregi

Algoritmul: se citește n, se declară vectorul de dimensiune n, se citește fiecare element (v[i]), apoi se afișează elementele separate prin spațiu. Acest exercițiu verifică înțelegerea indexării și a buclelor.

Cod C++: int n; cin>>n; int v[n]; for(i=0;i<n;i++) cin>>v[i]; for(i=0;i<n;i++) cout<<v[i]<<' ';

Exemplul 2: Determinarea elementului maxim dintr-o matrice pătratică de dimensiune n x n

Algoritmul: se inițializează max cu primul element (mat[0][0]), se parcurg toate elementele cu două bucle (i=0..n-1, j=0..n-1) și când se găsește un element mai mare, se actualizează max. La final se afișează max. Acesta este un model pentru prelucrarea datelor în matrice.

Exemplul 3: Sortarea crescătoare a unui vector prin metoda bulelor (bubble sort)

Algoritm: pentru i de la 0 la n-2, pentru j de la 0 la n-i-2, dacă v[j]>v[j+1] se interschimbă valorile. După fiecare parcurgere, cel mai mare element "bulează" la sfârșit. Complexitatea este O(n²). Se poate optimiza prin întreruperea algoritmului dacă nu se mai fac schimbări. Acest exemplu este frecvent la Bac pentru demonstrarea sortării.

Verifică-te!

  1. Cum se declară un vector de 50 de numere întregi în C/C++ și cum se accesează al treilea element?
  2. Care este diferența principală între parcurgerea unui vector și a unei matrice?
  3. În algoritmul bubble sort, ce se întâmplă cu cel mai mare element după prima parcurgere completă a vectorului?

Vrei exerciții pe lecția asta + AI care te ajută pas cu pas?
Cont gratuit — 20 întrebări AI/zi, exerciții nelimitate.

Creează cont