Sunteți pe pagina 1din 6

Seminar 5

Laborator 5

Aplicații rezolvate SLS – Pseudocod

1. Fie vectorii X = (x1, x2, … , xn) și Y=(y1, y2, ... ,yn). Să se determine produsul scalar între doi vectori
(de aceeași lungime) unde ps = x1 × y1 + x2 × y2 + ... + xn × yn (o dată elementară sau scalară).
Algoritmul este recursiv, cu formula de start ps=0 și formula recursivă ps=ps+xi*yi , i=1,n.

citește n, (x(i), i=1,n), (y(i), i=1,n);

ps=0;

for(i=1, n, 1)

ps=ps+x(i)*y(i);

scrie ps;

1
Seminar 5

2. Fie vectorii X = (x1, x2, … , xn) și Y=(y1, y2, ... ,yn). Să se determine produsul vectorial ce are ca rezultat
un vector, PV = (pv1, pv2, ..., pvn) și este un algoritm iterativ, în care formula iterativă este pv1=xi • yi
, i=1,n.

citește n, (x(i), i=1,n), (y(i), i=1,n);

for(i=1, n, 1)

pv(i)=x(i)*y(i);

scrie (pv(i), i=1,n);

2
Seminar 5

3. Să se determine pozițiile tuturor aparițiilor unei valori date într-un vector neordonat. Vectorul se
parcurge secvențial cu ajutorul structurii DO-FOR, de la primul la ultimul element, reținând valoarea
curentă a indicelui în cazul identității elementului cu valoarea căutată, într-un vector (poz) de poziții
(vectorul poz se construiește). Dacă la sfârșitul ciclării vectorul poz este vid (indicele k al acestuia este
0), atunci valoarea căutată nu a fost regăsită și se afișează un mesaj corespunzător.
{

citește n, (x(i), i=1,n), a;

k=0;

for(i=1, n, 1)

if(x(i)=a)

k=k+1;

poz(k)=i;

x(i)=a }

if(k>0)

scrie (poz(i), i=1,k);

else

scrie „Val. nereg.!”;

3
Seminar 5

4. Să se determine elementul maxim dintr-un vector și pozițiile aparițiilor sale.


Deoarece valoarea maximă poate apărea în vector de mai multe ori (cel puțin și cel mult de n
ori – în cazul șirului constant), se va construi un vector poz.
Vectorul poz se construiește simultan cu determinarea elementului max i în urma comparației
între variabila max și elementul x(i) apar două cazuri:
- dacă x(i) = max, se construiește un nou element în vectorul de poziții (indicele k al
vectorului poz se incrementează cu 1).
- dacă x(i) > max, înseamnă că s-a găsit o altă valoare maximă și indicele k al vectorului
poz se reinițializează cu 1.
Pentru ambele cazuri, în vectorul poz se reține valoarea curentă a indicelui de parcurgere a
vectorului de date.
Observație: deși vectorul poz va
avea cel puțin un element (în acest
exemplu), indicele de parcurgere k se
inițializează tot de la 0, ca și în cazul
construirii de vectori cu număr
necunoscut de elemente, posibil chiar
zero.

}
citește n, (x(i), i=1,n);
max=x(1);
k=0;
for(i=1, n, 1)
if(x(i)>=max)
{
if(x(i)>max)
{
max=x(i);
k=1;
}
else
k=k+1;
poz(k)=i;
}
scrie max, (poz(i), i=1, k);
}

4
Seminar 5

5. Să se insereze o valoare dată într-un vector ordonat de dimensiune n (după inserare vectorul va rămâne
ordonat).
Fie vectorul X = (x1, x2, … , xn) și a valoarea care trebuie inserată în vectorul ordonat. Se
parcurge vectorul atâta timp cât valoarea curentă din vectorul x este mai mica decât valoarea a și mai
sunt și elemente în vector. La ieșirea din structura repetitive, indicele current reprezintă poziția din
vector unde trebuie inserată valoarea. Inserarea se realizează după ce glisează toate valorile din dreapta
cu o poziție.
Observație: în cazul programului, dimensiunea efectivă a vectorului (valoarea lui n citită de la
tastatură) trebuie să fie cu cel puțin o unitate mai mică decât dimensiunea alocată, pentru a permite
extinderea (de exemplu n ≤ 99).

citește n, (x(i), i=1,n), a;

i=1;

while (i<=n && x(i)<a)

i=i+1;

for(j=n, i, -1)

x(j+1)=x(j);

j=j-1;

x(i)=a;

scrie (x(i), i=1, n+1);

5
Seminar 5

Probleme propuse spre rezolvare

1. Să se determine suma elementelor unui vector.


Fie 𝑋 = (𝑥1 , 𝑥2 , . .. , 𝑥𝑛 ), 𝑥𝑖 ∈ ℝ. Suma elementelor este 𝑆 = 𝑥1 + 𝑥2 + ⋯ + 𝑥𝑛 = ∑𝑛𝑖=1 𝑥𝑖

2. Să se determine suma elementelor cu valoare impară dintr-un vector.

3. Să se determine poziția primei apariții a unei valori date într-un vector neordonat.

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