Sunteți pe pagina 1din 5

CNME – 10 neintensiv & real – suport pentru studiu

Tipuri structurate de date – tablouri unidimensionale


operații elementare asupra tablourilor unidimensionale - parcurgerea, căutarea, ștergerea –

Pascal C++

Declarare : tablou unidimensional v de maxim 50 intregi, n elemente efectiv;


Notă: variabilele de manevă se vor identifica și declara după caz

var v:array[1..50] of integer; int v[50], n, i;


n,i:integer;

Citire / Afișare

1. Citirea 1. Citirea
cout<<"numarul de elemente n=");
for i:=1 to n do cin>>n;
begin for(i=0;i<n;i++)
write(’v[’,i,’]=’);readln(v[i]) {
end; cout<<”v[”<<i<<”]=”;
cin>>v[i];
2. Afisare }
for i:=1 to n do
begin 2. Afisare
write('v[',i,']=',v[i],';') for(i=0;i<n;i++)
end; {
cout<<”v[”<<i<<”]=”<<v[i]<<endl;
}

Operații elementare cu vectori

EDP©2010 Page 1
1. Suma elementelor unui vector 1. Suma elementelor unui vector
var s:integer; int s;
s:=0; s=0;
for i:=1 to n do for(i=0;i<n;i++)
s:=s+v[i]; s=s+v[i];
writeln(s); cout<<s<<endl;

2. Suma elementelor pozitive 2. Suma elementelor pozitive


var s:integer; int s;
s:=0; s=0;
for i:=1 to n do for(i=0;i<n;i++)
if v[i]>0 then if (v[i]>0)
s:=s+v[i]; s=s+v[i];
writeln(s); cout<<"suma elementelor "<<s<<endl;

3. Suma elementelor negative 3. Suma elementelor negative


var s:integer; int s;
s:=0; s=0;
for i:=1 to n do for(i=0;i<n;i++)
if v[i]<0 then if (v[i]<0)
s:=s+v[i]; s=s+v[i];
write(s); cout<<"suma elementelor
negative"<<s<<endl;

4. Produsul elementelor unui 4. Produsul elementelor unui vector


vector int p;
var p:integer; p=1;
p:=1; for(i=0;i<n;i++)
for i:=1 to n do p=p*v[i];
p:=p*v[i]; cout<<"produsul elementelor"<<p<<endl;
write(p);

5. Produsul elementelor aflate pe 5. Produsul elementelor aflate pe


poziții impare poziții impare
var p:integer; int p;
p:=1; p=1;
for i:=1 to n do for(i=0;i<n;i++)
if (i mod 2=1) then if (i%2==1)
p:=p*v[i]; p=p*v[i];
write(’produsul poz impare= ’,p); cout<<"produsul poz impare="<<p;

EDP©2010 Page 2
6. Produsul elementelor pare aflate 6. Produsul elementelor pare aflate
pe pozitii pare pe pozitii pare

var p:integer; int p;


p:=1; p=1;
for i:=1 to n do for(i=0;i<n;i++)
if (i mod 2=0 and v[i] mod 2=0) then if ((v[i]%2==0)&&(i%2==0))
p:=p*v[i]; p=p*v[i];
write(’produsul poz impare= ’,p); cout<<"produsul pare pe poz.
impare="<<p;

7. Numarul de elemente pare


var nr:integer; 7. Numarul de elemente pare
nr:=0; int nr;
for i:=1 to n do nr=0;
if (v[i] mod 2=0) then for(i=0;i<n;i++)
nr:=nr+1; if (v[i]%2==0)
write(’elemente pare = ’,nr); nr++;
cout<<"elemente pare ="<<nr;
8. Media aritmetica
var s:integer; ma:float; 8. Media aritmetica
int s;
s:=0; float ma;
for i:=1 to n do s=0;
s:=s+v[i]; for(i=0;i<n;i++)
write(’media aritmetica= ’,s/n:7:3); s+=v[i];
cout<<s/n;

Căutarea

1. Maxim 1. Maxim
var max:integer; int max;
max:=v[1]; max=v[0];
for i:=1 to n do for(i=1;i<n;i++)
if v[i]>max then if (v[i]>max)
max:=v[i]; max=v[i];
write(’maximul= ’,max); cout<<"maxim"<<max<<endl;

2. Minim 2. Minim
var min:integer; int min;
min:=v[1]; min=v[0];
for i:=1 to n do for(i=1;i<n;i++)
if v[i]<min then if (v[i]<min)
min:=v[i]; min=v[i];

EDP©2010 Page 3
write(’minimul= ’,min); cout<<"minim"<<min<<endl;

3. Cautare x 3. Cautare x
var x:integer; int x;
write(’ce caut? ’); cout<<"ce caut ? ";
read(x); cin>>x;
i:=1; for(i=0;i<=n && v[i]!=x ;i++);
while ((v[i]<>x) and (i<=n)) do if (i!=n)
inc(i); {
if (i<>n+1) then cout<<"am gasit pe
write(’am gasit pe ’,x,’ pe pozitia ’,i) "<<x<<"pe pozitia "<<i;
else }
write(’nu am gasit pe ’,x); else
cout<<"nu am gasit pe "<<x;

Ștergerea

1. Ștergerea 1. Ștergerea
var x,k,j:integer; k=0;
write(’ce sterg? ’); cout<<"ce sterg ? ";
read(x); cin>>x;
for i:=1 to n do for(i=0;i<n ;i++)
if v[i]=x then begin if (v[i]==x)
for j:=i to n do {for(int j=i;j<n;j++)
v[j]:=v[j+1]; v[j]=v[j+1];
k:=k+1end; k++;}
if k<>0 then if (k!=0)
write(’ au ramas ’,n-k,’ elemente’) cout<<"au ramas "<<n-k<<"elemente ";
else else
write(’ nu am gasit pe ’,x); cout<<"nu am gasit pe "<<x;

EDP©2010 Page 4
I. Exerciții pentru acasă

1.
i. Toate secvențele de mai sus se vor integra într-un program care va citi de la
tastatură un n întreg și apoi un tablou unidimensional de n întregi (n<=50).
Asupra tabloului se vor aplica toate operațiile elementare de mai sus. Elementele
vor fi distincte.
ii. Se va corecta secvența de ștergere așa încât să facă ștergerea corect chiar dacă
elementul de șters se repetă în șir și deci apare pe mai multe poziții.

II.
1. Fiind dat de la tastatură un șir de n numere întregi (2<=n<100), să se memoreze
într-un vector și să se determine elementul minim si elementul maxim, printr-o singura
parcurgere. Să se afișeze.
2. Fiind dat de la tastatură un șir de n numere întregi (2<=n<100), să se memoreze
într-un vector și să se determine cele mai mari două elemente distincte, printr-o
singură parcurgere a vectorului. Să se afișeze.
3. Fiind dat de la tastatură un șir de n numere întregi (2<=n<100), să se memoreze
într-un vector și să se afișeze pozițiile pe care se află n în șir. Să se șteargă n de pe
toate pozițiile pe care se află și să se afișeze noul vector. Dacă n nu este în șir se
afișează “NU ESTE”.

EDP©2010 Page 5