Uneori este necesara prelucrarea unui set de valori de acelasi tip,asezate intr-o anumita ordine.O astfel de structura se numeste sir,iar valorile respective se numesc elementele sirului.
Limbajul C++ ofera posibilitatea de a memora toate elementele sirului intr-o singura variabila indexata,in care elementele sunt dispuse intr-o anumita ordine,ocupand locatii de memorie succesive,binedeterminate.O astfel de variabila se numeste tablou unidimensional sau vector.
Pentru a referi un anumit element al vectorului,trebuie sa scriem numele variabilei-vector,urmat de pozitia elementului cuprinsa intre paranteze.
Declararea vectorului
Un vector trebuie declarat,la fel ca orice variabila,in sectiunea de declaratii a programului.In declaratia unui vector trebuie sa apara:identificatorul vectorului si tipul elementelor.
exemplu: int v[30];
Am declarat un vector v cu maxim 30 de elemente numere intregi;
-numele variabilei-vector este v;
-tipul elementelor vectorului este int,adica elementele sunt numere intregi;
-elementele vectorului sunt v[0],v[1],.....v[29] ,avand indicii 0,1,2,.....,29.
Citirea vectorului
Deoarece v este o variabila compusa,nu putem citi dintr-o data toate elementele vectorului.
Vom citi mai intai numarul real de elemente n.
cout<<"n=";
cin>>n;
for(i=1;i<=n;i++)
{
cout<<"v["<<i<<"]=";
cin>>v[i];
}
Afisarea unui vector
Folosind aceeasi metoda de parcurgere a vectorului,vom parcurge pozitiile elementelor din vector i=1,2...,n si pentru fiecare valoare a lui i,afisam elementul de pe pozitia i,adica v[i].
for(i=1;i<=n;i++)
cout<<v[i]<<" ";
Determinarea minimului dintr-un sir de numere
Fiind dat un sir de n numere intregi memorat intr-un vector,se pune problema determinarii elementului cel mai mic.
Memoram minimul intr-o variabila min.Presupunem initial ca minimul este primul element,intr-un ciclu,contorul i parcurge pozitiile elementelor i=1,2...n.Pentru fiecare valoare a lui i,comparam elementul v[i] cu minimul pe care il avem in acel moment in variabila min.Daca v[i] este mai mic decat minimul min,atunci elementul respectiv v[i] devine noul minim {min=v[i];}.
min=v[i];
for(i=1;i<=n;i++)
if(v[i]<min)
min=v[i];
Sortarea prin interschimbare directa
Fiecare din elementele v[1],....,v[n-1] va juca pe rand rolul unui asa-numit pivot.Parcurgem pivotii intr-un ciclu in care contorul i ia pe rand valorile 1,2,....,n-1 si la fiecare pas al ciclului comparam pivotul v[i] cu toate elementele aflate dupa el,v[i+1],....,v[n-1].Parcurgem pozitiile acestor elemente intr-un ciclu cu contorul j=i+1,...,n si pentru fiecare element v[j],daca este mai mic decat pivotul v[i],atunci v[j] trebuie sa fie inaintea lui v[i].
Interschimbarea lui v[i] cu v[j] se face prin metoda paharelor:salvam mai intai v[i] intr-o variabila aux{aux=v[i];},apoi aducem in v[i] valoarea lui v[j] {v[i]=v[j];} si in sfarsit,memoram in v[j] valoarea initiala a lui v[i] luata din aux {v[j]=aux;}.
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
if(v[j]<v[i])
{aux=v[i];
v[i]=v[j];
v[j]=aux;
}
Exemplu de program:
Dintr-un fisier se citesc n numere intregi.Sa se aranjeze vectorul astfel incat in prima parte a lui sa avem valori negative si in a doua parte valori pozitive.
#include<iostream.h>
int main()
{int n,v[20],i,j,aux;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
{cout<<"v["<<i<<"]=";
cin>>v[i];
}
for(i=1;i<=n;i++)
cout<<v[i] << " ";
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
if(v[i]>0 && v[j]<0)
{aux=v[i];
v[i]=v[j];
v[j]=aux;
}
for(i=1;i<=n;i++)
cout<<v[i] << " ";
return 0;}