Sunteți pe pagina 1din 12

Sa se scrie algoritmul pentru calculul sumei elementelor strict pozitive ale unui vector de dimensiune n.

Dupa citirea vectorului se initializeaza o variabila cu 0 pe care o vom folosi la calcularea sumei iar apoi se parcurge vectorul testandu-se fiecare Valoare daca e pozitiva ca sa o adunam la suma. Algoritmul in pseudocod: Real v[100],suma; Integer n,I; Read n; Do for i=1,n,1; Read v[i]; End for; Suma=0; Do for i=1,n,1 If v[i]>0 then Suma=suma+v[i]; End if End for; Write suma;

1.

2.

Sa se scrie algoritmul pentru determinarea pozitiei ultimei aparitii a unei valori date intr-un vector neordonat de dimensiune n.

Metoda 1 Alegem o variabila in care memoram pozitia elementului cautat si pe care o initializam cu o valoare care nu reprezinta pozitia vreunui element din vector (de exemplu -1) , apoi parcurgem vectorul si de fiecare data cand un element al vectorului este egal cu variabila pe care o cautam reinitializam pozitia cu indicele elementului din vector . La sfarsit verificam daca pozitia elementului cautat este tot valoarea cu care am initializat-o (valoarea catata nu se gaseste in vector) sau e diferita si o afisam Real v[100],a; Integer n,i,poz; Read n; Do for i=1,n,1; Read v[i]; End for; Read a; Poz=-1; Do for i=1,n,1 If v[i]=a then Poz=i; End if End for; If poz=-1 then Write Elementul cautat nu se regaseste in vector; Else Write Elementul cautat se gaseste pe pozitia , poz; Metoda 2 La fel ca prima doar ca vectorul se parcurge de la sfarsit si ne oprim cand se gaseste pentru prima oara valoarea cautata .

Sa se scrie algoritmul pentru determinarea elementului maxim dintr-un vector de dimensiune n si a pozitiei primei si ultimei sale aparitii. Vom initializa maximul cautat cu prima valoare a vectorului iar prima si ultima pozitie cu indicele primului element , apoi se parcurge vectorul si se compara fiecare element cu maximul.

3.

Daca maximul e mai mic decat elementul curent maximul va lua valoarea elementului curent iar prima si ultima pozitie iau valuarea indicelui elementului curent . daca maximul e egal cu elementul curent ultima pozitie va lua valoarea indicelui elementului curent . Real v[100],max; Integer n,i,poz1,poz2; Read n; Do for i=1,n,1; Read v[i]; End for; Max=v[1]; Poz1=1; Poz2=1; Do for i=2,n,1; if max<v[i] then max=v[i]; poz1=i; poz2=i; else if max=v[i] then poz2=i; end if end if end for Write max,poz1,poz2;

4.

Sa se scrie algoritmul pentru inserarea unui element dat intr-un vector ordonat de dimensiune n. Dupa inserare vectorul va ramane ordonat.

Se parcurge vectorul pana ce elementul care trebuie inserat devine mai mic decat elemntul curent din vector . Apoi se deplaseaza fiecare elemant al vectorului incepand cu ultimul catre capatul vectorului cu o pozitie . Se insereaza valoareea ceruta pe pozitie unde ne-am oprit. Real v[100],a;

Integer i,n,j; Read n; Do for i=1,n,1 Read v[i]; End for; Read a; i=1; While a<=v[i] do i=i+1; end while; j=n; while j>=i do v[j+1]=v[j]; j=j-1; end while; v[i]=a; do for i=1,n+1,1 write v[i]; end for;

9. Sa se scrie algoritmul pentru a verifica daca elementele unui vector formeaza o progresie aritmetica. Presupunem ca vectorul e progresie aritmetica si calculam diferenta primelor 2 termeni care reprezinta ratia , apoi verificam daca am presupus corect .Mai folosim o variabila initrializata cu 1( o notam p) si parcurgem vectorul facand diferenta termenilor consecutivi si o comparam cu ratia in cazul in care acestea nu sunt egale variabila auxiliara devine 0 . La sfarsit verificam daca p e 1(vectoru e progresie) sau 0. Real v[100],r;

Integer i,n,p; Read n; Do for i=1,n,1; Read v[i]; r=v[2]-v[1]; p=1; do for i=2,n-1,1; if v[i+1]-v[i]!=r then p=0; end if end for if p=1 then write E progresie aritmetica else write Nu e progresie aritmetica end if

10. Sa se scrie algoritmul pentru a verifica daca elementele unui vector formeaza o progresie geometrica.

La fel ca la 9) doar ca ratia va fi v[2]/v[1] si se va compara catul impartirii termenilor consecutivi Real v[100],r;

Integer i,n,p; Read n; Do for i=1,n,1; Read v[i]; r=v[2]/v[1]; p=1; do for i=2,n-1,1; if v[i+1]/v[i]!=r then p=0; end if end for if p=1 then write E progresie geometrica else write Nu e progresie geometrica end if

11. Sa se scrie algoritmul pentru calcularea dispersiei si abaterii medie patratica a elementelor unui sir de observatii statistice.

Real v[100],medie,abatere,dispersie; Integer n,i;

Read n; Do for i=1,n,1 Read v[i]; Medie=0; Do for i=1,n,1; Medie=medie+v[i]; End for Medie=medie/n; Abatere=0; Do for i=1,n,1 Abatere=(medie-v[i])*(medie-v[i]); End for Abatere=abatere/n; Dispersia=sqrt(abatere); Write abatere=,abatere ,dispersie=,dispersie;

12. Dandu-se un vector de maxim 100 de elemente, sa se scrie algoritmul pentru transformarea vectorului in multime, prin eliminarea dublurilor (operatia de compactare).

Folosim un alt vector in care memoram fiecare valoare o singura data . Parcurgem vectorul initial si la fiecare pas verificam daca elementul curent se gaseste si in vectorul pe care il construim si daca nu se gaseste il memoram in noul vector si marim cu 1 variabila in care am memorat dimensiunea vectorului

Real v[100],u[100]; Int i,j,n,m,aux;

Read n; M=0; Do for i=1,n,1 Aux=1; Do for j=1,m,1 If u[j]=v[i] Aux=0; End if If aux=1 U[m]=v[i]; M=m+1; End if End for Do for j=1,m,1 Write u[j]; end for;

13. Sa se scrie algoritmul care realizeze operatia de reuniune a doua multimi date. Pentru prima si a doua multime folosim 2 vectori v si u de dimensiune n si m si un treilea vector w a carui dimensiune t urmeaza sa o aflam . Initial copiem in z toate valorile lui v iar apoi parcurgem vectorul u si daca elementul curent e diferit de toate elementele din v atunci il punem in z iar t creste cu 1; Real v[100],u[100],w[200]; Integer i,j,m,t,aux;

Read n; Do for i=1,n,1; Read v[i]; End for Read m; Do for j=1,m,1 Read u[j]; End for Do for i=1,n,1 W[i]=v[i]; End for T=n; Do for j=1,m,1 Aux=1; Do for i=1,n,1 If u[j]=v[i] Aux=0; End for If aux=1 T=t+1; W[t]=u[j]; End if End for Do for i=1,t,1 Write w[i]; End for End if

14. Sa se scrie algoritmul care realizeze operatia de intersectie a doua multimi date. Pentru multimile date folosim vectorii v si u de dimensiune n si m si pentru intersectie un alt vector w cu dimensiunea t care trebuie aflata .Parcurgem vectorul v si pentru fiecare element verificam daca se gaseste si in u in il punem in w iar t creste cu 1 Real v[100],u[100],w[100]; Integer i,j,t,n,m,aux; Read n;

Do for i=1,n,1; Read v[i]; End for Read m; Do for j=1,m,1 Read u[j]; End for T=0; Do for i=1,n,1 Aux=0; Do for j=1,m,1 If v[i]=u[j] then Aux=1; End if End for If aux=1 T=t+1; W[t]=v[i]; End if; End for Do for i=1,t,1 Write w[i]; End for 15. Sa se scrie algoritmul care realizeze operatia de diferenta a doua multimi date. Pentru multimile date folosim vectorii v si u de dimensiune n si m si pentru intersectie un alt vector w cu dimensiunea t care trebuie aflata .Parcurgem vectorul v si pentru fiecare element verificam daca nu se gaseste si in u il punem in w iar t creste cu 1 Real v[100],u[100],w[100]; Integer i,j,t,n,m,aux; Read n;

Do for i=1,n,1; Read v[i]; End for Read m; Do for j=1,m,1 Read u[j]; End for T=0; Do for i=1,n,1 Aux=1; Do for j=1,m,1 If v[i]=u[j] then Aux=0; End if End for If aux=1 T=t+1; W[t]=v[i]; End if; End for Do for i=1,t,1 Write w[i]; End for

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