Sunteți pe pagina 1din 3

1.

Inserare şi ştergere

Numim inserare operația de introducere într-un vector a unei noi valori, pe o poziție
cunoscută, fără a pierde vreo valoare dintre cele deja existente.
Numim ştergere operația de eliminare din vector a unei valori a cărei poziție este
cunoscută.

Inserare : În vectorul x cu n elemente să inserează valoarea v, pe poziția p (1pn+1).

Exemplu :
Inițial : n=5, p=3, v=17 Final : n=6
x 10 20 30 40 50 x 10 20 17 30 40 50
ranguri 1 2 3 4 5 ranguri 1 2 3 4 5 6

Algoritm de rezolvare :
Pasul 1: se deplasează cu câte o poziție spre dreapta toate valorile ce ocupă
rangurile : n,n-1,…,p .
Astfel se suprascriu elementele x[n+1],x[n],…,x[p+1]
Pasul 2: numărul de valori din vector se incrementează
Pasul 3: se suprascrie elementul x[p] atribuindu-i-se valoarea v

Implementare :
for(i=n; i>=p; i-- )
x[i+1]=x[i];
n++;
x[p]=v;

Ştergere: Din vectorul x cu n elemente, se elimină valoarea ce ocupă poziția p (1pn).

Exemplu :
Inițial : n=5, p=3 Final : n=4
x 10 20 30 40 50 x 10 20 40 50
ranguri 1 2 3 4 5 ranguri 1 2 3 4

Algoritm de rezolvare :
Pasul 1: se deplasează cu câte o poziție spre stânga toate valorile ce ocupă
rangurile : p+1,p+2,…,n.
Astfel se suprascriu elementele x[p],x[p+1],…,x[n-1]
Pasul 2: numărul de valori din vector se decrementează

Implementare :
for(i=p+1; i<=n; i++ )
x[i-1]=x[i];
n--;
2. Permutare circulară

Permutare circulară stânga cu o poziție

Exemplu :
Inițial
x 10 20 30 40 50
ranguri 1 2 3 4 5

Final
x 20 30 40 50 10
ranguri 1 2 3 4 5

Algoritm de rezolvare  :
Pasul 1: se păstrează într-o variabilă auxiliară valoarea primului element
Pasul 2: se deplasează cu câte o poziție spre stânga toate valorile ce ocupă
rangurile : 2,3,…,n.
Astfel se suprascriu elementele x[1],x[2],…,x[n-1]
Pasul 3: se suprascrie elementul x[n] cu valoarea variabilei auxiliare

Implementare :
aux=x[1];
for(i=2; i<=n; i++ ) x[i-1]=x[i];
x[n]=aux;

Permutare circulară dreapta cu o poziție

Exemplu :
Inițial Final
x 10 20 30 40 50 x 50 10 20 30 40
rangur 1 2 3 4 5 ranguri 1 2 3 4 5
i

Algoritm de rezolvare  :
Pasul 1: se păstrează într-o variabilă auxiliară valoarea ultimului element
Pasul 2: se deplasează cu câte o poziție spre dreapta toate valorile ce ocupă
rangurile : n-1,n-2,…,1
Astfel se suprascriu elementele x[n],x[n-1],…,x[2]
Pasul 3: se suprascrie elementul x[1] cu valoarea variabilei auxiliare

Implementare :
aux=x[n];
for(i=n-1; i>=1; i-- )
x[i+1]=x[i];
x[1]=aux;

Probleme propuse
1. Din fișierul date.in se citesc numărul de elemente
ale unui vector v precum și elementele
vectorului(maxim 100 de numere naturale).Să se
șteargă primul element divizibil cu valoarea x (x se
citește de la tastatură). Se va afișa un mesaj în
cazul în care vectorul nu conține elemente divizibile
cu x.

2. Din fișierul date.in se citesc numărul de elemente


ale unui vector v precum și elementele
vectorului(maxim 100 de numere reale).Să se insereze
elementul cu valoare y înainte de primul element
format din cel puțin 2 cifre.(y se citește de la
tastatură). Se va afișa un mesaj în cazul în care
vectorul nu conține elemente formate din cel puțin 2
cifre.

3. Din fișierul date.in se citesc numărul de elemente


ale unui vector v precum și elementele
vectorului(maxim 100 de numere reale).Să se insereze
între oricare 2 elemente din vector media lor
aritmetică.

4. Din fișierul date.in se citesc numărul de elemente


ale unui vector v precum și elementele
vectorului(maxim 100 de numere întregi). Să se
înlocuiască fiecare valoare nulă din vector cu media
aritmetică a valorilor nenule din vector.