Citirea și afișarea elementelor

După ce am declarat un vector, pasul următor este să îl umplem cu valori și, mai târziu, să le afișăm. Atât citirea, cât și afișarea elementelor se bazează aproape întotdeauna pe o structură repetitivă, pentru că parcurgem vectorul element cu element.

Citirea elementelor

Modul în care citim un vector depinde de un singur lucru: știm sau nu, dinainte, câte valori vom citi?

Când știm câte elemente citim

De cele mai multe ori numărul de elemente n este citit chiar înaintea valorilor. În acest caz folosim o structură repetitivă cu număr cunoscut de pași:

int n, v[1001];
cin >> n;
for (int i = 1; i <= n; i++)
    cin >> v[i];

Aici am ales să memorăm valorile începând cu poziția 1, așa că indicele pornește de la 1 și ajunge până la n. Dacă preferăm numerotarea de la 0, instrucțiunea devine for (int i = 0; i < n; i++), citirea oprindu-se pe poziția n-1. Aceeași schemă funcționează și pentru citirea dintr-un fișier, atunci când cunoaștem numărul de valori.

Când nu știm câte elemente citim

Uneori numărul de valori nu este precizat. Atunci avem nevoie de un criteriu de oprire și de o structură repetitivă cu test inițial, care continuă cât timp criteriul este îndeplinit.

a) Citire de la tastatură. O convenție frecventă este să citim valori până la întâlnirea unei valori speciale, de exemplu 0:

int a, v[1001], i = 0;
cin >> a;
while (a) {
    v[i++] = a;
    cin >> a;
}

Citim prima valoare, apoi, cât timp ultima valoare citită este diferită de 0, o memorăm în vector și creștem indicele i. La finalul citirii, i conține exact numărul de valori introduse.

b) Citire dintr-un fișier. Citirea dintr-un fișier se oprește automat după ultima valoare, așa că putem folosi chiar operația de citire pe post de condiție:

ifstream in("date.txt");
int v[1001], i = 0, a;
while (in >> a) {
    v[i++] = a;
}

Citim cât timp mai există valori în fișier; fiecare valoare citită este memorată, iar indicele i avansează. La sfârșit, i reprezintă numărul total de elemente citite.

Indiferent de metodă, după citire este bine să reținem numărul de elemente într-o variabilă (aici n sau i), pentru că vom avea nevoie de el la fiecare parcurgere ulterioară a vectorului.


Publicitate

Afișarea elementelor

Afișarea unui singur element

Dacă vrem să afișăm o singură valoare, ne referim la ea prin indice, v[k], unde k este poziția dorită:

cout << v[k];

Afișarea mai multor elemente

Pentru a afișa toate elementele, sau doar o parte dintre ele, parcurgem vectorul cu o structură repetitivă:

int n, v[1001]; // n este numarul de elemente
for (int i = 0; i < n; i++)
    cout << v[i] << ' '; // separate printr-un spatiu

Este o practică bună să separăm valorile afișate printr-un spațiu (sau printr-un caracter de linie nouă), pentru ca rezultatul să fie lizibil. În interiorul buclei putem adăuga o condiție, dacă dorim să afișăm numai elementele cu o anumită proprietate, de exemplu numai numerele pare.

Concluzii

Citirea și afișarea unui vector se reduc, în esență, la o parcurgere cu o structură repetitivă. Cheia este să decidem de la început dacă numărul de elemente este cunoscut, caz în care folosim for, sau necunoscut, caz în care folosim while și un criteriu de oprire. Odată ce stăpânim parcurgerea, putem trece la operații mai complexe, precum inserarea și ștergerea elementelor.