Sunteți pe pagina 1din 3

SEMINAR 2

Probleme rezolvate

1. Pentru 2 vectori X şi Y cu elemente întregi, de dimensiune N, sã se calculeze şi sã se afişeze:


a) suma şi produsul elementelor vectorului X;
b) vectorul Z = X+Y;
c) produsul scalar al celor doi vectori;
d) media aritmeticã a elementelor impare ale vectorului Z.

start
citeşte N // se preia de la consolă numărul de elemente ale vectorului
pentru i = 0,N-1 execută // se citeşte vectorul X
| citeşte x[i]
|_□
pentru i = 0,N-1 execută // se citeşte vectorul Y
| citeşte y[i]
|_□

// a)
atribuie s  0 // se iniţializează valoarea sumei
atribuie p  1 // se iniţializează valoarea produsului
pentru i = 0,N-1 execută
| atribuie s  s + x[i]
| atribuie p  p * x[i]
|_□
scrie s,p

// b)
pentru i = 0,N-1 execută
| atribuie z[i]  x[i] + y[i]
|_□

pentru i = 0,N-1 execută // afişarea vectorului z


| scrie z[i]
|_□

// c)
atribuie ps  0 // se iniţializează valoarea produsului scalar
pentru i = 0,N-1 execută
| atribuie ps  ps + x[i]*y[i]
|_□
scrie ps

// d)
atribuie si  0 // se iniţializează valoarea sumei elementelor impare
atribuie nri 0 // se iniţializează valoarea numărului elementelor impare
pentru i= 0, N-1 execută
| dacă z[i] - 2*parte întreagă (z[i]/2)  0
atunci // restul împărţirii la 2 nenul
| | atribuie si  si + z[i]
| | atribuie nri  nri + 1
| |_ □
|__ □
dacă nri  0 atunci // este posibilă împărţirea la nri
| atribuie ma  si/nri // se calculează media
| scrie ma
| altfel
| scrie “Vectorul nu contine elemente impare”
|_ □
stop
2. Pentru un vector V de dimensiune N să se ordoneze descrescător elementele sale folosind
sortarea prin interschimbare .

start
citeşte n
pentru i = 0 , n - 1 execută
| citeşte v[i]
|_□
pentru i = 0 , n - 2 execută
| pentru j = i +1, n-1 execută
| | dacă v[i] < v[j] atunci
| | | atribuie aux  v[i]
| | | atribuie v[i]  v[j]
| | | atribuie v[j]  aux
| | |_□
| |_□
|_□
pentru i = 0 , n - 1 execută
| scrie v[i]
|_□
stop

3. Dată matricea a (MxM):


a. să se determine elementul maxim al matricii şi poziţia acestuia;
b. să se calculeze suma şi produsul elementelor de pe diagonala principală;
c. să se calculeze şi să se afişeze numărul elementelor pozitive ale matricii;
d. să se interschimbe elementele liniei r cu elementele liniei s.

start
citeşte M // se preia de la consolă numărul de linii ale matricii
pentru i = 0,M-1 execută // se citeşte matricea a
| pentru j = 0,M-1 execută
| citeşte a[i][j]
|_ □
// a)
atribuie max  a[0][0] // se presupune ca elementul maxim este plasat pe prima
atribuie lin_max  0 //linie si prima coloană
atribuie col_max  0
pentru i = 0,M-1 execută
| pentru j = 0,M-1 execută
| dacă a[i][j] > max atunci
| | atribuie max  a[i][j] // se actualizează valoarea elementului maxim
| | atribuie lin_max  i // şi poziţia acestuia
| | atribuie col_max  j
| |_ □
|_ □
// b)
atribuie sd  0 // se iniţializează suma elementelor de pe diagonala principală
atribuie pd  1 // se iniţializează produsul elementelor de pe diagonala principală
pentru i = 0,M-1 execută
| atribuie sd  sd + a[i][i]
| atribuie pd  pd * a[i][i]
|__
scrie sd, pd
// c)
atribuie nr_poz  0 // se iniţializează numarul elementelor pozitive
pentru i = 0,M-1 execută
| pentru j = 0,M-1 execută
| | dacă a[i][j] > 0 atunci
| | | atribuie nr_poz  nr_poz + 1 // se incrementează numarul elementelor pozitive
| | |_ □
| |_ □
|_ □
scrie nr_poz
// d)
citeşte r,s
dacă 0<=r<= M - 1 i 0<=s<= M - 1 atunci
| pentru j = 0,M-1 execută
| | atribuie temp  a[r][j]
| | atribuie a[r][j]  a[s][j]
| | atribuie a[s][j]  temp
| |_ □
| altfel
| scrie "Date incorecte"
|_ □
stop

4. Pentru 2 matrici A(mxn), B(nxp) să se calculeze şi afişeze matricea C(mxp) =A*B.

start
citeste m,n,p // se preiau de la consolă dimensiunile matricelor A şi B
pentru i = 0,m-1 execută // se citeşte matricea A
| pentru j = 0,n-1 execută
| | citeşte A[i][j]
| |_ □
|_ □
pentru i = 0,n-1 execută // se citeşte matricea B
| pentru j = 0,p-1 execută
| | citeşte B[i][j]
| |_ □
|_ □
pentru i = 0,m-1 execută // se calculează produsul C= A * B
| pentru j = 0,p-1 execută
| | atribuie s←0
| | pentru k = 0,n-1 execută
| | | atribuie s ←s+A[i][k]*B[k][j]
| | |_ □
| | atribuie C[i][j]←s
| |_ □
|_ □
pentru i = 0,m-1 execută
| pentru j = 0,n-1 execută
| | scrie A[i][j]
| |_ □
|_ □
pentru i = 0,n-1 execută
| pentru j = 0,p-1 execută
| | scrie B[i][j]
| |_ □
|_ □

pentru i = 0 , m-1 execută


| pentru j = 0 , p-1 execută
| | scrie C[i][j]
| |_ □
|_ □

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