Sunteți pe pagina 1din 5

Recapitulare vectori

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];

Parcurgerea unui vector


De la stanga la dreapta De la dreapta la stanga
for (i=1; i<=n; i++) for (i=n; i>=1; i--)
...prelucreaza elementul a[i]; ...prelucreaza elementul a[i];

Citirea elementelor unui vector


De la tastatura Din fisier text
int a[101], n, i; ifstream f(”vector.in”);
cin>>n; // dimensiunea logică int a[101], n, i;
for (i=1; i<=n; i++) f>>n;
cin>>a[i]; for (i=1; i<=n; i++)
f>>a[i];

Afisarea elementelor unui vector


Pe ecran În fișier text
int a[101], n, i; ofstream g(”vector.out”);
.... int a[101], n, i;
for (i=1; i<=n; i++) ....
cout<<a[i]<<” ”; for (i=1; i<=n; i++)
cout<<endl; g<<a[i]<<” ”;
g<<endl;
Operații elementare
Cu elementele vectorului Cu pozițiile
....inițializări //sume cu 0, produse cu 1 ....inițializări
for (i=1; i<=n; i++) for (i=1; i<=n; i++)
if(a[i] indeplinește o proprietate) if( i indeplineste o proprietate dată)
...prelucrează a[i]; ...prelucrează a[i];

Verifică daca toate elementele unui vector respectă o regulă


bool verifică (int a[], int n)
{ for(int i = 1 ; i <= n ; i ++)
if(a[i] - NU respectă regula)
return false;
return true;
}

Apel
....
if(verifica(a,n))
cout<<”da”;
else
cout<<”nu”;

Verifică daca cel putin un element ăndeplineste o conditie


bool verifică (int a[], int n)
{ for(int i = 1 ; i <= n ; i ++)
if(a[i] - respectă regula)
return true;
return false;
}

Apel
....
if(verifica(a,n))
cout<<”da”;
else
cout<<”nu”;

Perechi de elemente care se pot compara într-un vector


Elemente vecine: elementul a[i] este vecin cu a[i+1], pentru orice valoare i=1̅̅,̅n̅̅̅−̅̅̅1̅
for(int i = 1 ; i < n ; i ++)
if(a[i] si a[i+1] indeplinesc conditia)
...prelucreaza elementele conform cerintei
Elemente egal depărtate de capetele vectorului: elementul a[i] este aflat la egală distanță de capete cu a[n-i+1], pentru
orice valoare i=1,n/2
for(int i = 1 ; i <= n/2 ; i ++)
if(a[i] si a[n-i+1] indeplinesc conditia)
...prelucreaza elementele conform cerintei
Oricere pereche de elemente elementul a[i] este aflat în pereche cu a[j], pentru orice valoare i=1,n-1 și j= i+1,n
for(int i = 1 ; i < n ; i ++)
for(int j = i+1 ; j <= n ; j ++)
if(a[i] si a[j] indeplinesc conditia)
...prelucreaza elementele conform cerintei
Sterge elementul de pe pozitia k
...
for(int i=k+1; i<=n; i++)
a[i-1]=a[i];
n--;
...

Inserare valoare x pe pozitia k


...
for(int i=n; i>=k; i--)
a[i+1]=a[i];
a[k]=x;
...

Permutare circulara vector cu 1 pozitie spre stanga


...
aux= a[1];
for(int i=2;i<=n; i++)
a[i-1]=a[i];
a[n]=aux;
...

Permutare circulara vector cu 1 pozitie spre dreapta


...
aux= a[n];
for(int i=n-1;i>=1; i--)
a[i+1]=a[i];
a[1]=aux;
...

Stergerea tuturor elementelor care indeplinesc o conditie data


k=0;
for(int i=1;i<=n; i++)
if(a[i] nu tb șters)
{k++;
a[k]=a[i];
}
n=k;

Inserarea unui element x dupa fiecare element care indeplineste o conditie data
i=1;
while(i<=n)
{ if(după a[i] tb inserat x)
{for(int j=n;j>=i+1;j--)
a[j+1]=a[j];
a[i+1]=x;
n=n+1;
i=i+2;
}
else
i++;
}

Ordonarea vectorilor
Selectia minimului
for(i=1; i<=n; j++)
{ min=a[i]; ///determin minimul si pozitia lui dintre a[i], a[i+1],...,a[n]
poz=i;
if( min>a[j])
{min=a[j];
poz=j;
}
a[poz]=a[i];///interschimb a[i] cu a[poz]
a[i]=min;
}
Metoda Bubble
ok=0;
while(!ok)
{ ok=1;
for(i=1; i<n ;i++)
if( a[i]> a[i+1])
{swap (a[i],a[i+1]);
ok=0;
}
}
Selectie directa
for(i=1; i<n; i++)
for (j=i+1; j<=n; j++)
if( a[i]> a[j])
swap (a[i],a[j]);
Sortare STL
#include <iostream>
#include<algorithm>
using namespace std;
...............
int main()
{ ...............
sort(a+1,a+n+1);// sortarea crescator a vectorului cu n elemente(numerotate
// de la 1 la n).
...............
}

Sau
stable_sort(a+1, a+n+1);

Exemplu: Sortare STL dupa un criteriu (de ex restul impartirii cu 7)

#include<algorithm>
using namespace std;
...............
bool comparare(int x, int y)
{ if (x%7 < y%7)
return true;
else
return false;
}

int main()
{ ...............
sort(a+1,a+n+1, comparare); // sortarea crescatoare dupa restul
// impartirii cu 7 a vectorului cu n
// elemente(numerotate de la 1 la n).
...............
}
Tema este pe pbinfo!

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