M3 L3 Info Tablouri unidimensionale

O mulțime de date consecutive de același tip se numește tablou sau vector dacă este memorată într-o zonă continuă de memorie. Atunci când elementele vectorului sunt indexate cu un singur contor se numește tablou unidimensional.

Definiție:

Un tablou unidimensional (sau vector) este o structură de date utilizată în programare pentru a stoca mai multe valori de același tip într-o singură variabilă. Aceasta este o colecție ordonată de elemente, accesibile printr-un indice (index).

Definiție C++:

Un tablou unidimensional în C++ este o colecție de elemente de același tip, stocate consecutiv în memorie și accesibile printr-un index numeric.

Declarare vector:

type nume_tablou[dimensiune];
int a[100]; //vectorul a are maxim 100 de elemente numere întregi

În matematică mai precis la algebră sau la analiză matematică vectorii din informatică sunt șiruri de numere.

Vectorii sunt memorați într-o zonă continuă de memorie care este identificabilă după adresa primului element din vector.

Accesul la un element din vector:

Se face folosind un index de obicei notat cu i ca variabilă de tip întreg adică se declară int i. Folosim instrucțiunea repetitivă cu contor for având de obicei forma:

for( int i = 0;  i < n ; i++) //unde n poate avea o valoare maximă egală cu maximul vectorului 

În instrucțiunea de mai sus avem:

int i // declarare vector

i=0 // inițializare contor

i<n // condiția de ieșire din buclă

i++ // pasul cu care se numără elementele tabloului

Accesul direct la un element din vector:

#include <iostream>
using namespace std;

int main() {
    int v[5] = {1, 2, 3, 4, 5};  // Inițializare directă
    cout << "Elementul 2: " << v[1] << endl;  // Accesarea elementului cu indexul 1
    return 0;
}

În exemplul de mai sus se observă că vectorii în C++ sunt implicit zero indexați de program. Adică vectorul are primul element v[0].

12345
v[0]v[1]v[2]v[3]v[4]
img 1. tabelul unidimensional al programului de mai sus

Observație:

La inițializarea directă (vezi programul de mai sus) C++ permite inițializarea fără a specifica dimensiunea:

int v[ ] = {1, 2, 3, 4, 5};  // Compilatorul deduce automat dimensiunea

Exemplu: Declarare și Inițializare directă

Inițializarea directă înseamnă scrierea valorilor elementelor tabloului între acolade ca în exemplul de mai jos.

#include <iostream>
using namespace std;

int main() {
    int v[5] = {10, 20, 30, 40, 50};  // Inițializare directă

    cout << "Elementele tabloului sunt: ";
    for (int i = 0; i < 5; i++) {
        cout << v[i] << " ";
    }

    return 0;
}

Acest program va afișa:

Elementele tabloului sunt: 10 20 30 40 50

Citirea și afișarea unui tablou unidimensional

#include <iostream>
using namespace std;

int main() {
    int n;
    cout << "Introduceti numarul de elemente: ";
    cin >> n;

    int v[n]; // Alocare dinamică (funcționează doar în unele compilatoare moderne)

    cout << "Introduceti " << n << " elemente:\n";
    for (int i = 0; i < n; i++) {
        cin >> v[i];
    }

    cout << "Elementele introduse sunt: ";
    for (int i = 0; i < n; i++) {
        cout << v[i] << " ";
    }

    return 0;
}

Modificarea unui element din tablou:

#include <iostream>
using namespace std;

int main() {
    int v[5] = {1, 2, 3, 4, 5};

    v[2] = 10; // Modifică elementul de pe poziția 2

    cout << "Tabloul modificat: ";
    for (int i = 0; i < 5; i++) {
        cout << v[i] << " ";
    }

    return 0;
}

Tabloul modificat:

Tabloul modificat: 1 2 10 4 5

Căutarea unui element într-un tablou:

#include <iostream>
using namespace std;

int main() {
    int v[5] = {3, 7, 9, 2, 5};
    int valoare, gasit = 0;

    cout << "Introduceti valoarea cautata: ";
    cin >> valoare;

    for (int i = 0; i < 5; i++) {
        if (v[i] == valoare) {
            cout << "Valoarea " << valoare << " a fost gasita la indexul " << i << ".\n";
            gasit = 1;
            break;
        }
    }

    if (!gasit) {
        cout << "Valoarea nu a fost gasita.\n";
    }

    return 0;
}

Teme:

  1. Să se scrie un program care citește de la tastatură și afișează pe ecran 5 numere întregi memorate într-un tablou unidimensional.
  2. Să se scrie un program care declară prin inițializare directă un tablou unidimensional de 3 elemente și modifică valoarea elementului de pe poziția 1.
  3. Să se scrie un program care afișează elementele pare ale unui tablou.
  4. Să se scrie un program care afișează elementele unui tablou în ordine inversă.

Observație: La temele 4,5 tabloul poate fi declarat prin inițializare directă.