Sunteți pe pagina 1din 4

1.

Stergere elemente impare

-Sa spunem ca vrem sa eliminam din vectorul v=( 22, 7, 2020, 3, 1) cu n=5 , elementul de pe pozitia 3,
adica 2020. Cum procedam? Elementele cu indici p+1 (4) si p+2 (5) se muta spre stanga cu o pozitie, iar
dimensiunea n a tabloului unidimensional se micsoreaza cu 1 (n--)

In C++, stergerea se efectueaza astfel:


for(int i = p ; i < n - 1; i ++)

X[i] = X[i+1];

n --;

-Considerăm un șir v cu n elemente întregi. Să se elimine din șir toate elementele impare.

parcurgem șirul și analizăm elementul curent v[i];

dacă elementul v[i] este impar, aplicăm algoritmul de mai jos pentru ștergerea elementului cu indicele i.

-algoritm-

Se parcuge vectorul si se testeaza daca elementul este impar.

Pentru vectorul v=(7, 9, 4, 2, 1, 6, 5) cu n=7 elemente


i=1, v[1]=7, 7%2!=0, deci v[1] se sterge

i=2, v[2]=9, 9%2!=0, deci v[2] se sterge

i=3, v[3]=4, 4%2==0, deci v[3] ramane

i=4, v[4]=2, 2%2==0, deci v[4] ramane

i=5, v[5]=1, 1%2!=0, deci v[5] se sterge

i=6, v[6]=6, 6%2==0, deci v[6] ramane

i=7, v[7]=5, 5%2!=0, deci v[7] ramane

La sfarsitul parcurgerii, raman doar elementele pare (logic), ca in imaginea de mai jos
Codul (tot bolduit)

#include <iostream>

using namespace std;

int main()

int v[100], i , n, j;

cin>>n;

for(i=1; i<=n; i++)

cin>>v[i];

for(i=1; i<=n; i++)

if(v[i]%2!=0)

for(j=i; j<n; j++)

v[j]=v[j+1];

n--;

i--;

for(i=1; i<=n; i++)

cout<<v[i]<<" ";

return 0;

}
2. Inserare dublu elemente pare

Adaugarea unui element in vector inseamna marirea dimensiunii logice n a vectorului si memorarea in
ultimul element a noii valori.

Similar cu algoritmul de ștergere a unui element dintr-un vector, și cel de inserare presupune
modificarea elementelor din dreapta lui v[i] . De data aceasta elementele vor fi mutate spre
dreapta, începând cu ultimul. Elementul v[i] se înlocuiește cu noua valoare, iar dimensiunea logică a
vectorului crește, fără a depăși însă dimensiunea fizică.
---Sa se insereze intr-un vector v cu n elemente, dublul elementelor pare.----

Se procedeaza astfel:

Parcurgem sirul

Daca elementul curent v[i] este par(conditia)

Inseram pe pozitia i+1 valoarea v[i]*2, pe care am denumit o in cod cu ajutorul variabilei k.

-algoritmul-
Pentru vectorul v=(7, 9, 4, 2, 1, 6, 5) cu n=7 elemente
i=1, v[1]=7, 7%2!=0, deci v[1] ramane pe aceeasi pozitie, neschimbat

i=2, v[2]=9, 9%2!=0, deci v[2] ramane pe aceeasi pozitie, neschimbat

i=3, v[3]=4, 4%2==0, deci v[3] ramane pe aceeasi pozitie, insa in dreapta lui se
insereaza 4*2, respectiv 8

i=4, v[4]=2, 2%2==0, deci in dreapta v[4] (initial) se insereaza 2*2, respectiv 4

i=5, v[5]=1, 1%2!=0, deci v[5] nu se dubleaza

i=6, v[6]=6, 6%2==0, deci in dreapta v[6](=6, initial) se insereaza 6*2, respectiv 12

i=7, v[7]=5, 5%2!=0, deci v[7] nu se dubleaza


Asadar, dupa scrierea codului in code::blocks si build and run, (+ scrierea vectorului),
consola ar trebui sa arate asa:

Codul(tot bolduit):
#include <iostream>

using namespace std;

int main()

int v[100], n , i, j, k;

cin>>n;

for(i=1; i<=n; i++)

cin>>v[i];

for(i=1; i<=n; i++)

k=v[i];

if(k%2==0)

n++;

for(j=n; j>=i; j--)

v[j+1]=v[j];

v[i+1]=2*k;

i++;

for(i=1; i<=n; i++)

cout<<v[i]<<" ";

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