Sunteți pe pagina 1din 9

Algoritmi elementari vectori

1. Algoritmul care determina valoarea minima dintr-un vector


Ex: n=6, v=(3,2,5,1,6,9) => min=1
D.i: n,v[1000]
D.o: min
D.a: i
Pseudocod:
1. citim n
2. pentru i=1,n,1 executa:
2.1 citim v[i]
3. min=v[1] // pp ca prima val din vector este cea mai mica
4. // parcurg vectorul elem cu elem si caut o valoare mai mica decat
minimul pp
pentru i=1,n,1 executa
4.1 daca (v[i]<min) min=v[i] //verif daca val curenta din v[i] este
mai mica decat minimul si caz afirmativ o retin ca fiind noul minim
5. afisam min
Pasii pentru un exemplu:
n=6, v=(3,2,5,1,6,9)
min=v[1]=3
i=1,6,1 => i=1, v[1]<min, nu =>-
i=2, v[2]<min(2<3), da => min=v[2]=2
i=3, v[3]< min, nu=> -
i=4, v[4]< min(1<2), da=> min=v[4]=1
i=5, v[5]< min, nu => -
i=6, v[6]<min, nu => -
afisam min=> 1
C++
#include<iostream.h>
int v[1000],i,min,n;
void main()
{cout<<n=;cin>>n;
for(i=1;i<=n;i++)
{cout<<v[<<i<<]=;
cin>>v[i];
}
//aplicam alg de minim
min=v[1];
for(i=1;i<=n;i++)
if (min<v[i]) min=v[i];
cout<<min;
}
2. Algoritmul care determina valoarea maxima dintr-un vector tema

3. Algoritmul care cauta o valoare citita x de la tastatura in vector
Ex; n=5, v=(3,6,7,8,12) si x=8 => Da
n=5, v=(3,6,7,8,12) si x=56 => Nu
D.i: n,v[1000], x(valoarea cautata)
D.o: mesaj
D.a: i, ok
Pseudocod fol. m.r.a
1. citim n
2. pentru i=1,n,1 executa:
citim v[i]
3.citim x //citim valoarea cautata
4. ok=0 // pp ca x nu exista in vector, daca il gasim ok=1
5. //parcurg vectorul si verific daca un elem din vector este = x
pentru i=1,n,1 executa
5.1 daca (v[i]==x) ok=1 // am gasit valoarea din x in vector
6. daca (ok==1) afisam da
altfel afisam nu
6. stop

C++
#include<iostream.h>
int v[1000],i,x,n;
void main()
{cout<<n=;cin>>n;
for(i=1;i<=n;i++)
{cout<<v[<<i<<]=;
cin>>v[i];
}
cout<<x=;cin>>x;
//alg de cautare secventiala a unei valori intr-un vector
ok=0;
for(i=1;i<=n;i++)
if (x==v[i]) ok=1;
if (ok==1) cout<<Da;
else cout<<Nu;
}
4. Algoritmul de ordonare a elementelor unui vector
n=5, v=(3,2,5,4,1)
Idee: se parcurge vectorul si fiecare element se compara pe rand cu toate
elementele de dupa el, in cazul in care nu respecta conditia de ordonare se
vor interschimba valorile elementelor
Pasii pentru exemplu numeric:
.
v=(3,2,5,4,1)
i=1,5,1, i=1, v[1]: v[2]v[5] (comparatii)
v[1]>v[2], da => v=(2,3,5,4,1)
v[1]>v[3], nu=>-
v[1]>v[4], nu =>-
v[1]>v[5], da => v=(1,3,5,4,2)
i=2, v[2]: v[3]v[5]
v[2]>v[3], nu =>-
v[2]>v[4], nu => -
v[2]>v[5], da=> v=(1,2,5,4,3)
i=3, v[3]:v[4],v[5]
v[3]>v[4], da => v=(1,2,4,5,3)
v[3]>v[5], da => v=(1,2,3,5,4)
i=4, v[4]: v[5]
v[4]>v[5], da=> v=(1,2,3,4,5)
Algoritmul

pentru i=1,n-1,1 executa
pentru j=i+1, n, 1 executa
daca (v[i]>v[j]) atunci { aux=v[i];v[i]=v[j];v[j]=aux;}

C++
#include<iostream.h>
int v[1000], n , i , j , aux ;
void main ()
{cout<<n= ;cin>>n;
for(i=1;i<=n;i++)
{cout<<v[<<i<<]=;cin>>v[i];}
//ordonam vectorul
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
if(v[i]>v[j])
{aux=v[i];v[i]=v[j];v[j]=aux;}
//afisam vectorul ordonat
for(i=1;i<=n;i++)
{cout<<v[i]<< ;}
}
5. Algoritmul pentru stergerea unui element dintr-un vector
n=5, v=(2,6,4,8,9) valoarea de sters x=4 => v=(2,6,8,9), ! n=4
Idee: se localizeaza valoarea x in vector si apoi elementele din dreapta sa se
deplaseaza o pozitie la stanga.
..
pentru i=1,n,1 executa
daca (v[i]==x) {//deplasam elementele la stanga cu o pozitie
pentru j=i, n-1,1 executa
v[j]=v[j+1];
}
n=n-1;// micsorez dimensiunea vectorului cu 1 deoarece am sters un element

C++
#include<iostream.h>
int v[1000], n , i , j , x ;
void main ()
{cout<<n= ;cin>>n;
for(i=1;i<=n;i++)
{cout<<v[<<i<<]=;cin>>v[i];}
cout<<x=;cin>>x;
for(i=1;i<=n;i++)
if (v[i]==x) {
for(j=i;j<=n-1;j++)
v[j]=v[j+1];
}
n=n-1;
//afisam noul vector
for(i=1;i<=n;i++)
cout<<v[i]<< ;
}

6 Algoritmul inserare a unei valori y pe pozitia p intr-un vector
n=5, v=(4,2,7,8,9), y=13, p=3 => v=(4,2,13,7,8,9)
Idee: deplasam toate elem incepand cu pozitia p la dreapta
1. Citim n
2. pentru i=1,n,1 executa:
2.1 citim v[i]
3.citim y //citim valoarea de inserat
4. citim p // pozitia pe care inseram
5. pentru i=1,n,1 executa:
5.1 daca (i==p) {// localizam pozitia pe care inserez si deplasez elem
la dreapta cu o pozitie
pentru j=n+1, p, -1 executa
v[j]=v[j-1];
v[p]=y//plasez in vector noua valoare
}
6 n=n+1
7 pentru i=1,n,1 executa
7.1 afisam v[i]

7 Algoritmul de formare a unui vector

Ex: Se citeste un numar natural y, sa se formeze un vector cu toate val
impare <=y.
Y=12 => v=(1,3,5,7,9,11)
D.i: y
D.o: v[100],k,
D.a: i
1. citim y
2. k=0//pozitia pe care vom pune valoare in vector
3. pentru i=1,y,1 executa//parcurg val <=y
3.1 daca (i%2==1) {//am gasit o valoare impara si o pun in vector
k=k+1 //tabilesc pozitia in vector
v[k]=i//pun valoarea pe pozitia anterior
stabilita
}
4. pentru i=1,k,1 executa
4.1 afisam v[i]
RETINETI ! Ultima valaore a pozitiei k=la final numarul de elemente din
vectorul format.