Sunteți pe pagina 1din 4

Un tablou unidimensional se declară în C++ astfel:

tip
denumire_tablou[nr_max_elemente]
;
de exemplu: int X[10];
float y[50];
char x[100],y[100];

Ne putem imagina tabloul declarat mai sus astfel (valorile elementelor sunt aleatorii):

Spunem că fiecare element are un indice.


Indicii unui tablou sunt între 0 și
nr_max_elemente-1, deci în exemplul nostru între 0 și 9.
Observație: Nu este necesar la declarare tabloul să fie singura variabilă declarată în
instrucțiunea declarativă. Următoarea instrucțiune este corectă sintactic.
int n, X[10], m, Y[100], p;

Care sunt valorile inițiale ale elementelor tabloului? Regula este aceeași ca pentru
alte variabile:
 elementele unui tablou declarat global (în afara oricărei funcții) sunt
inițializate cu 0;
 elementele unui tablou declarat local (în interiorul unei funcții) sunt
inițializate cu valori aleatorii. Faptul că anumite implementări la
compilatorului C++ inițializează și variabilele local cu 0 nu este o regulă, ea
nu este garantată de standardul C++.

Referirea unui element


Referirea unui element se face prin operatorul de indexare, [], care are prioritate maximă. De
exemplu:
X[0], X[5], X[i]
Aici X este identificatorul
tabloului (denumirea), iar 0, 5 sau i sunt indicii. Este necesar ca
programatorul (adică TU!) să se asigure că valoarea indicelui se găsește în intervalul potrivit
pentru tabloul dat (în exemplul nostru între 0 și 9).
Un element al tabloului, referit prin indice este tratat ca o variabilă oarecare de tipul stabilit la
declarare. Următoarele expresii/instrucțiuni sunt corecte:
int X[10];
cin >> X[0];
X[0] = 17;
cout << X[0];
cout << X[0] / 5;
Observație: C++ nu verifică dacă valoarea indicelui face parte din intervalul stabilit prin
declararea tabloului. Dacă indicele are o valoare în afara acestui interval, comportamentul
programului este impredictibil.
Este necesar ca programatorul să se asigure că valorile indicilor sunt corecte.

Dimensiunea unui tablou unidimensional


La declararea unui tablou unidimensional se precizează o dimensiune pentru acesta. Aceasta
reprezintă o dimensiune fizică a tabloului – numărul maxim de elemente pe care le-ar putea
avea acesta, conform restricțiilor problemei.
De cele mai multe ori, în program nu se folosesc toate elementele tabloului. De regulă, enunțul
unei probleme cu tablouri este:
“Se citește un vector cu n elemente, numere …. Să se …..”
Este deci necesar ca în program să avem o variabilă – de regulă se notează n, care să reprezinte
dimensiunea logică a tabloului – numărul de elemente ale tabloului care la un moment dat sunt
utilizate în program.

Parcurgerea unui tablou unidimensional


Parcurgerea unui tablou reprezintă referirea fiecărui element al tabloului, într-o anumită ordine.
Referirea elementului se face prin intermediul indicelui, cu ajutorul operatorului de indexare.

Următorul exemplu declară un tablou cu 100 de elemente și memorează în primele n elemente


ale tabloului valoarea 1. După cum știm deja, n trebuie să respecte relația n<=100. În caz contrar,
comportamentul programului devine impredictibil – foarte probabil execuția sa va fi oprită de
sistemul de operare.
int X[100], n;
//n = .... ;
for(int i = 0 ; i < n ; i ++)
X[i] = 1;
De regulă, parcurgerea tabloului se face în ordinea crescătoare a indicelor, de la 0 la n-1. Făcând
o analogie cu axa numerelor, putem spune că parcurgerea se face de la stânga spre dreapta.
Tabloul poate fi parcurs și de la dreapta la stânga, adică în ordinea descrescătoare a indicilor, de
la n-1 la 0:
for(int i = n - 1 ; i >= 0 ; i --)
X[i] = 1;
Citirea unui vector de la tastatura
int X[100], n;
De fapt, în cele mai multe cazuri nu se poate face citirea unui tablou unidimensional (vector),
adică
cin >> X;
Instrucțiunea de mai sus duce de regulă la eroare de sintaxă. În schimb, se pot citi elementele
tabloului, în ordine, cu ajutorul parcurgerii:
cin >> n;
for(int i = 0 ; i < n ; i ++)
cin >> X[i];
Afișarea unui vector pe ecran
int X[100], n;
La fel ca în cazul citirii, în cele mai multe cazuri nu se poate face nici afișarea unui vector, adică
cout << X;
Spre deosebire de citire, afișarea unui tablou cu ajutorul operatorului de inserție << nu duce la
eroare de sintaxă, însă nu se vor afișa elementele tabloului, ci o adresă (de exemplu
0x7ffc9711bcd0), reprezentând adresa primului element al tabloului. Elementele tabloului se
pot afișa prin parcurgere, în ordinea dorită:
for(int i = 0 ; i < n ; i ++)
cout << X[i] << ' ';
sau
for(int i = n - 1 ; i >= 0 ; i --)
cout << X[i] << ' ';

Citirea unui vector din fisier


fin >> n;
for(int i = 0 ; i < n ; i ++)
fin >> X[i];
Afișarea unui vector in fisier
for(int i = 0 ; i < n ; i ++)
fout >> X[i]<<” “;

APLICATii: (de pe pbinfo https://www.pbinfo.ro/ )

Afisare0

Se citește un vector cu n elemente, numere naturale. Să se afișeze elementele din vector care sunt
multipli ai ultimului element.

Paritate1

Se dă un șir cu n elemente, numere naturale. Determinați diferența în valoare absolută dintre


numărul de valori pare din șir și numărul de valori impare din șir.

Afisare
Se citește un vector cu n elemente, numere naturale. Să se afișeze elementele cu indici pari în
ordinea crescătoare a indicilor, iar elementele cu indici impari în ordinea descrescătoare a
indicilor.

Suma2

Se citește un vector cu n elemente, numere naturale. Să se determine suma valorilor elementelor


cuprinse între primul și ultimul element par al vectorului, inclusiv acestea.

Constr

Se dă un vector x cu n elemente, numere naturale. Să se construiască un alt vector, y, cu


proprietatea că y[i] este egal cu restul împărțirii lui x[i] la suma cifrelor lui x[i].

Numarare4

Se dă un vector cu n numere naturale. Să se determine câte dintre elementele vectorului sunt


prime cu ultimul element(au cmmdc=1).

S-ar putea să vă placă și