Sunteți pe pagina 1din 3

Ștergeri de elemente din vectori

Fie un vector a cu n elemente notate a[1], a[2], a[3],…a[n-1], a[n]. Să se șteargă din vector toate
elementele care îndeplinesc o proprietate data.

i=1;
cât timp i<=n executa
daca a[i] trebuie șters atunci
deplasează spre stânga a[i+1], a[i+2],…a[n]
scade n cu 1
altfel
i=i+1
sfarsit_daca
sfarsit_cat_timp

Sau mai eficient, fără a realiza deplasări:


k=0;
pentru i=1,n execută
daca a[i] nu trebuie șters atunci
k++
a[k]=v[i]
sfarsit_daca
sfârșit pentru
n=k;

Aplicații ștergere

1. Să se șteargă dintr-un șir elementul aflat pe o poziție dată, k.


2. Să se șteargă dintr-un vector toate elementele pare.
3. Să se șteargă dintr-un vector toate elementele care nu sunt numere prime.
4. Gigel a găsit un șir cu n numere naturale. În fiecare zi Gigel parcurge șirul și când găsește o
pereche de elemente consecutive egale elimină din șir cele două elemente și apoi scrie șirul și se
oprește. Determinați în câte zile va elimina Gigel toate elementele din șir care se repetă pe poziții
consecutive și care sunt valorile din șir după toate aceste eliminări.

Adăugarea unui element într-un vector


Adăugarea unui element într-un vector înseamnă mărirea dimensiunii logice n a vectorului și
memorarea în ultimul element a noii valori. Următoarele secvențe adaugă o valoare într-un
vector indexat de la 0.

X[n] = val;
n ++;

sau, mai condensat:

X[n++] = val;
Următoarele secvențe adaugă o valoare într-un vector indexat de la 1.

n ++;
X[n] = val;

sau, mai condensat:

X[++n] = val;

Inserarea unui element într-un vector


Considerăm următoarea problemă :

Se dă un șir X cu n elemente întregi, o valoare întreagă val și un număr p. Să se


insereze pe poziția p în șir valoarea val.
Similar cu algoritmul de ștergere a unui element dintr-un vector, și cel de inserare presupune
modificarea elementelor din dreapta lui X[p]. De data aceasta elementele vor fi mutate spre
dreapta, începând cu ultimul. Elementul X[p] se înlocuiește cu noua valoare, iar dimensiunea
logică a vectorului crește, fără a depăși însă dimensiunea fizică.

for(int i = n - 1 ; i >= p ; i --)


X[i+1] = X[i];
X[p] = val;
n ++;

Inserarea mai multor valori în șir


Se dă un vector cu n elemente naturale. Să se insereze după fiecare element par,
jumătatea sa.
Principial, procedăm astfel:

 parcurgem șirul
 dacă elementul curent X[p] este par
o inserăm pe poziția p+1 valoarea X[p]/2

Dacă parcurgerea se face de la stânga spre dreapta, există riscul unor inserări suplimentare
Aplicații inserare
1. Să se insereze pe o poziție dată într-un șir o valoare precizată.
2. Să se insereze într-un șir după fiecare element par dublul său.
3. Să se insereze într-un șir înaintea fiecărui element pătrat perfect rădăcina sa pătrată
4. Se dau n numere întregi. Să se insereze între oricare două numere de aceeași paritate media lor
aritmetică.

Manipularea elementelor într-un vector. Aplicații


1. Se dă un vector v cu n componente numere întregi fără a folosi un vector auxiliar să se mute
la sfârşitul lui v elementele sale nule păstrând ordinea celorlalte elemente.
Exemplu: dacă iniţial v=(2,3,0,9,0,0,8) în final va rezulta v=(2,3,9,8,0,0,0).
2. Se citeşte un sir cu n elemente numere naturale. Să se rearanjeze numerele din şir astfel
încât cele pare să ocupe primele poziţii din şir în ordinea crescătoare.
Exemplu:dacă şirul iniţial este (7,8,5,2,10,4) atunci după rearanjare devine (2, 4, 10, 7, 5).
3. Se dă un şir de n componente naturale (1<n<100).Să se afişeze cel mai mic număr natural
care se poate alcătui luând prima cifră a fiecărui element al şirului.
Exemplu:Pentru n=4 şi elementele (234,7650,19,2) numărul este 1227.
4. Se dă un vector v cu n componente numere întregi. Găsiţi cea mai mare valoare negativă şi
cea mai mică valoare pozitivă din vectorul dat.
Exemplu: dacă iniţial v=(12, 3, -4, 9,-10,-2, 8) va rezulta maxn = -2 şi minp= 3
5. Se citeşte un sir cu n elemente numere naturale. Să se afişeze elementele distincte din vector
şi numărul de apariţii al fiecăruia.
Exemplu: dacă şirul iniţial este (7,8,7,7,14,8) atunci se va afişa 7 apare de 3 ori, 8 de două ori şi 14
o dată
6. Se consideră doi vectori cu componente numere întregi, x cu n elemente şi y cu m elemente.
Să se insereze toate elementele celui de-al doilea vector, începând de la poziţia k în primul
vector(k va fi citit).
Exemplu: Dacă iniţial x=(1, 2, 3, 4, 5, 6, 7), y=(9, 10, 11), k=4 după inserare
x=(1,2,3,9,10,11,4,5,6,7)
7. Fie un tablou unidimensional cu n elemente valori naturale. Să se determine o submulţime de
elemente din tablou, pentru care suma elementelor este divizibilă cu n.
Exemplu: Pentru n=7 şi A=(3, 6,4,2,11, 5, 9) se va afişa: 6, 4, 2,11,5
8.Se consideră un tablou unidimensional cu n(n<100) elemente întregi. Să se determine toate
secvenţele de elemente de pe poziţii consecutive, care au suma egală cu S. Fiecare secvenţă
de elemente va fi afişată pe câte o linie pe ieşirea standard.
Exemplu: Pentru n=7, S=9 şi vectorul (3, 2, 3,4, 5, 11, -7) se va afişa:
234
45
5 11 -7

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