Sunteți pe pagina 1din 2

Tablouri unidimensionale- vectori

Prelucrări elementare ale vectorilor

1. Determinarea elementului minim/maxim


Metoda tipică de determinare a elementului minim/maxim dintr-un vector este următoarea : se
iniţializează minimul/maximul cu primul element din vector apoi se compară cu celelalte elemente din vector
reţinându-se, pe rând, valorile mai mici/mai mari.

cin>>n; cin>>n;
for(i=1; i<=n; i++) for(i=1; i<=n; i++)
cin>>v[i]; cin>>v[i];
minim=v[1]; maxim=v[1];
for(i=2; i<=n; i++) for(i=2; i<=n; i++)
if(v[i]<minim) if(v[i]>maxim)
minim=v[i]; maxim=v[i];
cout<<minim; cout<<maxim;

2. Determinarea primului element cu o anumită proprietate


Pentru a determina primul element (de indice minim) cu o anumită proprietate, se parcurge vectorul de
la stânga la dreapta până când găsim primul element cu proprietatea cerută sau până când epuizăm elementele
vectorului. De exemplu, determinarea primului element nul dintr-un vector se realizează cu secvenţa:

poz=-1;
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
for(i=1;i<=n;i++)
if(v[i]==0)
{ poz=i; break; }
if(poz==-1)
cout<<"nu exista niciun element nul";
else
cout<<"primul element nul este pe pozitia: "<<poz;

Verificând valoarea variabilei poz decidem dacă în vectorul există cel puţin un element cu proprietatea cerută
(poz=indicele acestuia) sau nici unul (poz=-1).

3. Determinarea numarului elementelor din vector care sunt numere impare

nr=0;
for(i=1;i<=n;i++)
if(v[i]%2==1)
nr++;
/// parcurg vectorul și pentru fiecare valoare din vector impara, a[i]%2==1, incrementam variabila nr

4. Inversarea elementelor din vector


Ex. a=(1 2 3 4 5) → a=(5 4 3 2 1)

cin>>n;
for(i=1; i<=n; i++)
cin>>v[i]; cin>>n;
for(i=1; i<=n/2; i++) for(i=1; i<=n; i++)
{ cin>>v[i];
aux=v[i], for(i=1; i<=n/2; i++)
v[i]=v[n-i+1]; swap(v[i],v[n-i+1]);
v[n-i+1]=aux; for(i=1; i<=n; i++)
} cout<<v[i]<<' ';
for(i=1; i<=n; i++)
cout<<v[i]<<' ';

///se interschimba valorile din vector aflate la distante egale fata de margini, a[i] cu a[n-i+1]
5. Mutarea elementelor din vector cu o pozitie la dreapta (permutare circulara la dreapta)

Ex. a=(1 2 3 4 5) → a=(5 1 2 3 4)

cin>>n;
for(i=1; i<=n; i++)
cin>>v[i];
aux=v[n]; /// se salveaza ultima valoare din vector in aux
for(i=n; i>=1; i--)
v[i]=v[i-1];///se “muta” primele n-1 valori cu o pozitie la dreapta
v[1]=aux;/// se memoreaza pe prima pozitie din vector valoarea din aux
for(i=1; i<=n; i++)
cout<<v[i]<<' ';

7. Mutarea elementelor din vector cu o pozitie la stanga (permutare circulara la stanga)

Ex. a=(1 2 3 4 5) → a=( 2 3 4 5 1)

cin>>n;
for(i=1; i<=n; i++)
cin>>v[i];
aux=v[1]; /// se salveaza prima valoare din vector in aux
for(i=1; i<n; i++)
v[i]=v[i+1];///se “muta” ultimele n-1 valori cu o pozitie la stanga
v[n]=aux; // se memoreaza pe ultima pozitie din vector valoarea din aux
for(i=1; i<=n; i++)
cout<<v[i]<<' ';

8. Inserarea unui element x pe poziția k

cin>>n>>k>>x;
for(i=1; i<=n; i++)
cin>>v[i];
for (i=n; i>=k; i--)
v[i+1]=v[i];
v[k]=x;
n++;
for(i=1; i<=n; i++)
cout<<v[i]<<' ';
9. Eliminarea elementului de pe poziția k

cin>>n>>k;
for(i=1; i<=n; i++)
cin>>v[i];
for (i=k; i<n; i++)
v[i]=v[i+1];
n--;
for(i=1; i<=n; i++)
cout<<v[i]<<' ';

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