construirea unui vector din alt vector. Inversarea unui vector in alt vector.
Inversarea
Să zicem că șirul nostru are lungimea n. Atunci, pentru a inversa vectorul, trebuie ca:
- elementele a[1] și a[n] să se interschimbe;
- elementele a[2] și a[n - 1] să se interschimbe;
- elementele a[3] și a[n - 2] să se interschimbe;
- …
Algoritmul de inversare a unui tablou unidimensional
Vom proceda astfel: ne creăm doi indici, i și j, inițial egali cu 1, respectiv cu n. La fiecare pas, interschimbăm elementele a[i] și a[j], incrementăm i (i++) și decrementăm j (j--). Astfel, valorile lui i și j vor fi exact cele de mai sus (1, n; 2, n - 1; 3, n - 2; …). Ne oprim atunci când i ≥ j, adică la jumătatea șirului (ca să nu interschimbăm de două ori elementele).
i = 1;
j = n;
while(i <= j)
{
//Interschimbăm a[i] și a[j]
aux = a[i];
a[i] = a[j];
a[j] = aux; //Trecem la următoarele elemente: a[i + 1] și a[j - 1]
i++;
j--;
}
Construirea unui vector
v[0]=1;
//citesc a doua valoarea din vector
cin>>v[1];
//inițializez poziția din vector cu 2
i=2;
while(i<2*n-1){
//citesc valoarea de pe poziția i+1
cin>>v[i+1];
//calculez valoarea de pe poziția i
după regula dată
v[i]=v[i-1]+v[i+1];
//incrementez poziția cu 2
i=i+2;
}
//afișez vectorul construit
cout<<"Vectorul construit este: ";
for(i=0;i<=2*n-1;i++)cout<<v[i]<<" ";