Sunteți pe pagina 1din 4

Prof.

Mihaela Corina ILDEGEZ


Centru pentru pregătire pentru Performanță ”Hai la Olimpiadă

Obiective:
Declarare
Citire/afisare
Vectori operații simple Prelucrări simple prin parcurgeri de
tablouri unidimensionale

Un vector(tablou unidimensional) este un șir cu număr cunoscut de elemente, toate de același tip.

Cuprins:
Declarare: ...........................................................................................................................................................1
Accesarea unui element din vector ....................................................................................................................2
Dimensiunea unui vector ...................................................................................................................................2
Parcurgerea unui vector .....................................................................................................................................2
Citirea vectorului ................................................................................................................................................3
Afișarea vectorului .............................................................................................................................................3
Operații simple cu elementele vectorului ..........................................................................................................3
#633 Paritate1 ....................................................................................................................................................3
#546 Afișare0......................................................................................................................................................3
#488 Afișare........................................................................................................................................................4
#489 Afisare1......................................................................................................................................................4

Declarare:
tip_element nume_vector[dimensiune maximă];

unde:

 tip_element - se numește tipul de bază al elementelor vectorului și poate fi:


o pentru numere naturale: unsigned int, unsigned long long
o pentru numere întregi: int, long long
o pentru numere reale: float, double
 nume vector - numele variabilei, de obicei o literă
 dimensiune maximă - numărul maxim de elemente ce pot fi memorate

Atenție! Primul element din vector ocupă poziția zero. Putem însă să memorăm primul element pe poziția 1,
dar trebuie să avem grijă să adăugăm 1 la dimensiunea maximă:

tip_element nume_vector[dimensiune maximă+1];

Exemple:

 int a[100]; vectorul a poate memora maxim 100 de elemente primul element ocupă poziția 0, iar
ultimul va ocupa poziția 99, toate cele 100 de elemente vor fi numere intregi de tip int
Prof. Mihaela Corina ILDEGEZ
Centru pentru pregătire pentru Performanță ”Hai la Olimpiadă
 int a[101]; vectorul a poate memora maxim 101 de elemente primul element ocupă poziția 1, iar
ultimul va ocupa poziția 100, iar poziția 0 rămâne liberă

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.

Exemplu de vector int a[101], cu n=8 elemente:

Elemente: liber 10 5 17 -9 4 8 -23 12

Indici: 0 1 2 3 4 5 6 7 8

În continuare vom explica toate operațiile cu vectori, memorând primul element de la poziția 1.

Accesarea unui element din vector


Se realizează pe baza unui indice, prin operatorul de indexare [ ], care are prioritate maximă. Exemplu:

 a[1] are valoarea 10 și este primul element din vectorul a


 a[3] are valoarea 17 și ocupă poziția 3
 a[7] are valoarea -23 și ocupă poziția 7
 ̅̅̅̅̅
a[i] este elementul curent care se prelucrează, ocupă poziția i unde i=1, 𝑛

Dimensiunea unui vector


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 vector


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. De
regulă, parcurgerea tabloului se face în ordinea crescătoare a indicelor, de la 1 la n. Făcând o analogie
cu axa numerelor, putem spune că parcurgerea se face de la stânga spre dreapta.
for (i=1; i<=n; i++)
…prelucreaza elementul a[i];

Tabloul poate fi parcurs și de la dreapta la stânga, adică în ordinea descrescătoare a indicilor, de


la n la 1:
for (i=n; i>=1; i--)
…prelucreaza elementul a[i];
Prof. Mihaela Corina ILDEGEZ
Centru pentru pregătire pentru Performanță ”Hai la Olimpiadă
Citirea vectorului
Inițial se citește dimensiunea logică n a șirului apoi se parcurge vectorul de la primul la
ultimul și citirea se realizează element cu element.
De la tastatură
int a[101], n, i;
cin>>n; //numarul concret de elemente(dimensiunea logică)
for (i=1; i<=n; i++)
cin>>a[i]; //citim valoare elemntului de pe pozitia i
Din fișier text
ifstream f(”vector.in”); //deschidem fisierul vector.in pentru citire
int a[101], n, i;
f>>n; //numarul concret de elemente(dimensiunea logică)
for (i=1; i<=n; i++)
f>>a[i]; //citim valoare elemntului de pe pozitia i

Afișarea vectorului
Se parcurge vectorul de la stânga la dreapta și se afișează element cu element valorile memorate în
vector. Trebuie să afișăm câte un spațiu după fiecare element din vector.

Pe ecran
int a[101], n, i;
....
for (i=1; i<=n; i++)
cout<<a[i]<<” ”; //afisam valoare elemntului de pe pozitia I si un spatiu
cout<<endl;
in fișier text
ofstream g(”vector.out”); //deschidem fisierul vector.out pentru scriere
int a[101], n, i;
....
for (i=1; i<=n; i++)
g<<a[i]<<” ”; //afisam valoare elemntului de pe pozitia i si un spatiu
g<<endl;

Operații simple cu elementele vectorului


a) condiție în funcție de elementul curent a[i]
Daca elementul a[i] indeplinete o proprietate
....inițializări //sume cu 0, produse cu 1
for (i=1; i<=n; i++)
if(a[i] indeplinește o proprietate)
…prelucrează a[i]
Exemple:

#633 Paritate1 #546 Afișare0


#include <iostream> #include <iostream>
using namespace std; using namespace std;
int main() int main()
{ {
int a[1001],n,i; int a[1001],n,i;
int par=0,impar=0; cin>>n;
cin>>n; for(i=1; i<=n; i++)
for(i=1; i<=n; i++) cin>>a[i];
cin>>a[i]; for(i=1; i<=n; i++)
for(i=1; i<=n; i++) if(a[i]%a[n]==0)
Prof. Mihaela Corina ILDEGEZ
Centru pentru pregătire pentru Performanță ”Hai la Olimpiadă
if(a[i]%2==0) cout<<a[i]<<" ";
par++; return 0;
else }
impar++;
if(par-impar>=0)
cout<<par-impar;
else
cout<<impar-par;
return 0;}

b) condiție în funcție de poziția i a elementului curent a[i]


Daca elementul a[i] indeplinete o proprietate
....inițializări //sume cu 0, produse cu 1
for (i=1; i<=n; i++)
if( i indeplineste o proprietate dată)
…prelucrează a[i]

Exemple:

#488 Afișare #489 Afisare1


#include <iostream> #include <iostream>
using namespace std; using namespace std;
int main() int main()
{ {
int a[1001],n,i; int a[1001],n,i;
cin>>n; cin>>n;
for(i=1; i<=n; i++) for(i=1; i<=n; i++)
cin>>a[i]; cin>>a[i];
for(i=1; i<=n; i++) for(i=1; i<=n/2; i++)
if(i%2==0) cout<<a[i]<<" "<<a[n-i+1]<<" ";
cout<<a[i]<<" "; if(n%2==1)
cout<<endl; cout<<a[n/2+n%2];
for(i=n;i>=1;i--) cout<<endl;
if(i%2==1) return 0;
cout<<a[i]<<" "; }
return 0;
}

Tema acasa:

#486, #553, #547, #490, #491, #487, #986, #492, #498, #499

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