Declararea vectorilor

Înainte de a folosi un vector, trebuie să îl declarăm. Declararea îi rezervă în memorie un număr fix de locații consecutive și îi stabilește tipul valorilor pe care le va păstra. Spre deosebire de o variabilă simplă, care reține o singură valoare, un tablou unidimensional reține mai multe valori sub același nume.

Sintaxa declarării

Forma generală a declarării unui vector este:

tip_data nume_vector[numar_maxim_elemente];

Cele trei componente au următoarea semnificație:

  • tip_data: tipul de dată comun al tuturor elementelor memorate în vector (de exemplu int, float sau char);
  • nume_vector: numele prin care ne vom referi la vector și la elementele sale;
  • numar_maxim_elemente: o constantă care indică numărul total de locații rezervate, adică dimensiunea maximă a vectorului.

Iată câteva declarări concrete:

int v[100];      // un vector de 100 de numere intregi
float x[501];    // un vector de 501 numere reale
char cuvant[20]; // un vector de 20 de caractere

Putem declara un vector pe aceeași linie cu alte variabile de același tip:

int v[100], n, i;

Un vector declarat global (în afara oricărei funcții) este inițializat automat cu valoarea 0 pe toate pozițiile. Un vector declarat local (în interiorul unei funcții) conține inițial valori reziduale, de cele mai multe ori numere mari și imprevizibile.


Publicitate

Referirea la un element

Pentru a folosi un anumit element al vectorului ne raportăm la indicele său, scriind v[k], unde k este poziția elementului. Așa cum am văzut în prezentarea generală a vectorilor, în C++ numerotarea pornește de la 0, deci un vector cu n elemente are pozițiile valide cuprinse între 0 și n-1.

În rezolvarea problemelor este adesea mai comod să memorăm valorile începând cu poziția 1, lăsând poziția 0 neutilizată. Astfel, „al k-lea element” se află chiar pe poziția k, ceea ce simplifică stabilirea limitelor și referirea la elemente. În acest caz trebuie doar să rezervăm o poziție în plus la declarare: pentru a memora 100 de numere începând de la poziția 1, declarăm int v[101];.

Declararea cu valori inițiale

Putem declara un vector completându-i direct valorile, între acolade:

tip_data nume_vector[] = {v0, v1, ..., vn};

În această formă nu mai este nevoie să precizăm dimensiunea între paranteze drepte: compilatorul o deduce singur, numărând valorile dintre acolade. În schimb, suntem nevoiți să scriem fiecare valoare în poziția dorită.

Tehnica este utilă atunci când vectorul conține date fixe, cunoscute dinainte. Să luăm un exemplu.

Enunț. Se citește un număr i. Folosind un vector cu numărul de zile al fiecărei luni dintr-un an nebisect, afișați câte zile are luna i.

int v[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, i;
cin >> i;
cout << v[i];

Pentru intrarea 12 programul afișează 31, iar pentru intrarea 9 afișează 30.

Ideea este să așezăm numărul de zile al fiecărei luni chiar pe poziția corespunzătoare numărului lunii. Poziția 0, care nu corespunde niciunei luni, primește valoarea 0 și rămâne nefolosită, exact ideea de a porni numerotarea de la 1, despre care am vorbit mai sus. Astfel, v[i] ne dă direct răspunsul, fără niciun calcul suplimentar.

Concluzii

Declararea unui vector revine la a-i alege tipul și dimensiunea maximă. Reține că dimensiunea trebuie să fie suficient de mare pentru toate valorile pe care le vei memora, că pozițiile încep de la 0 și că, atunci când datele sunt fixe, le poți completa direct la declarare. Odată declarat vectorul, pasul firesc următor este să îi citim și să îi afișăm elementele.