Descărcați ca PDF, TXT sau citiți online pe Scribd
Descărcați ca pdf sau txt
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.