Sunteți pe pagina 1din 18

ALGORITMI CICLICI

Algoritmii pentru care există posibilitatea repetării execuţiei unuia sau a mai multor paşi,
alcătuiesc categoria algoritmilor CICLICI.
Succesiunea de paşi care poate fi executată în mod repetat poartă denumirea de ciclu.
Numărul de repetări ale unui ciclu poate fi fix sau variabil.
Cea mai mare parte a algoritmilor utilizaţi în practică este reprezentată de algoritmi ciclici.
Aceşti algoritmi permit o descriere concisă a unor succesiuni de numeroşi paşi. Algoritmii
ciclici sunt indicaţi în special pentru a fi executaţi cu ajutorul calculatoarelor electronice.
În schema logică a unui algoritm ciclic, un ciclu este reprezentat printr – o săgeată care
porneşte dela o ieşire x1 a condiţiei logice până la locul de unde s-a început executarea
secvenţei de instrucţiuni de calcul.
Un algoritm ciclic poate avea mai multe cicluri, acestea putând fi incluse unul în celălalt
Procedeul de repetare a secvenţei de paşi se numeşte ciclare.
Structurile repetitive de bază care apar în schemele algoritmilor ciclici sunt de trei feluri:
1).Instrucţiunea de ciclare cu test final ( condiţia logică )
Adică testarea ( condiţia logică ) se face la sfârşit. Ea determină repetarea sub controlul unei
condiţii, a execuţiei unei secvenţe de instrucţiuni.

Execuţia buclei cu test final presupune parcurgerea următoarelor


etape:
1. Se execută secvenţa S
2. Se evaluează condiţia; dacă rezultatul este fals, se continuă cu
pasul 1), în caz contrar, se încheie execuţia buclei.

2). Instrucţiunea de ciclare cu test iniţial ( condiţia logică)


În unele prelucrări este utilă instrucţiunea de ciclare în care testul se face la început şi apoi
execuţia secvenţei de instrucţiuni de calcul.

Execuţia structurii repetitive cu test iniţial presupune parcurgerea


următoarelor etape:
1. Se evaluează condiţia; dacă rezultatul este adevărat se trece la
pasul 2, altfel execuţia se încheie;
2. Se execută secvenţa A, apoi se trece la pasul 1).

3)Instrucţiunea de ciclare cu variabilă contor.


Atunci când subprocesul de calcul este dat sub forma unei relaţii de recurenţă ca de exemplu:
ai+1 = ka1 + p; a1 = l
Se iniţializează variabila contor cu i = 0 sau i = 1 , înainte de a intra în ciclu cu un test final,
iar în interiorul ciclului valoare lui i creşte cu 1, adică i := i +1 , până în momentul când
i > n - 1 adică i = n , în acest moment repetarea instrucţiunilor din ciclu se opreşte.
Variabila i numără execuţiile secvenţei din ciclu, de aceea se
numeşte variabilă contor Această structură are un număr cunoscut de
repetiţii a “Secvenţei A”, motiv pentru care se numeşte structură
repetitivă cu contor.
Execuţia structurii repetitive cu contor presupune
parcurgerea următoarelor etape:
1).Variabila de ciclare “contor” i ia valoarea iniţială i := 0

45
2). Dacă “contor” este mai mic sau egal cu valoarea finală se execută “Secvenţa A”, se adună 1 la
“contor” şi se reia cu pasul 2).. Altfel, execuţia este încheiată.
APLICAŢII

1) .Instrucţiunea de ciclare cu test iniţiall ( condiţia logică )

a). Să se scrie schema logică a algoritmului lui Euclid de aflarea


C.M.M.D.C. a două numere
Am văzut cum s-a demonstrat
acest algoritm, îl scriem numai
schematic :

Fie două numere a, b ��, a > b


Dacă b = 0 � ( a, b) = ( a, 0) = a
��
a
Dacă b �0 � r1 = a - ��bşi a( b, ) =b( r, 1 )
��
b
��
Dacă r = 0 � ( a, b ) = b
Dacă
��
b
r1 �0 � r2 = b - �� rşi b( r, 1 ) =r( r1 , 2 )
��
r
1
��1

Se constată că raţionamentul se repetă şi deci


putem atribui lui

a pe b ( care se scrie : a := b) şi lui b atribuie pe r ( care se scrie : b := r ) şi apoi repetăm,


��
b
atribuie r := a - ��r
��
r
��
Schema logică este :

b) Algoritmul împărţirii cu rest.


Soluţie.

a = 17, b = 7
Fie r = 17 - 7q
pasul 1: q = 0
pasul 2 : r = 17
pasul 3: dacă r < b, urmează pasul 7
Fie După fiecare testare dacă r > 7 , se repetă
altfel urmează pasul 4
pasul 4: r = 17 - 7 = 10 şi q = 0 +1
pasul 5: rşi= 10
r >7 =10 -şi 7q�=
1 3 =1 +1 = 2
pasul 6: r = 3 < 7
pasul 7: terminat r = 3
paşii.

46
Generalizare Fie

a, b �=+Σ<
� a bq r , q, r �şi 0 r b
r = a - bq
pasul 1: q := 0
pasul 2: r := a
pasul 3: Dacă r < b urmează pasul 7
altfel urmează paşii 4,5
pasul 4: r := a - bq
pasul 5: q := q +1
pasul 6: Dacă r < b urmează pasul 7
altfel urmează paşii 3,4,5
pasul 7: terminarea algoritmului

3) Instrucţiunea de ciclare cu variabilă


contor

Subprocesul de calcul care urmează să se


repete de un număr finit de ori într-un
algoritm, determină un ciclu de calcul.
Fie n numărul repetărilor procesului de
calcul.
Această numărătoare se poate face cu
ajutorul unei variabile contor. Să notăm
o astfel de variabilă cu i . Iniţial i se poate atribui o valoare naturală de exemplu i := 1, apoi se
va mări mereu cu câte o unitate folosind notaţia i := i +1 .
De fiecare dată va trebui să testăm condiţia i �n . În cazul că este îndeplinită condiţia i �n ,
procesul de calcul se va relua ( se va repeta ), în caz contrar se trece mai departe.
Vom conveni ca reluarea execuţiei procesului de calcul să o exprimăm printr-o săgeată în
organigrama algoritmului din care face parte.
Subprocesele de calcul exprimate prin formula de recurenţă xi = f ( xi- 1 ) ; i = 1, 2,3,...., n , numită şi
formulă de recurenţă ( iterativă ) în care nu ne interesează rezultatele intermediare: x1 , x2 , x3 ,...., xn- 1 ,
ci numai rezultatul final xn , dar pentru al afla pe xn , trebuie să repetăm de n ori procesul de
calcul : x := f ( x) în funcţie de valorile lui i , formează un algoritm ciclic.
Formula de structură a acestui algoritm este:
Asociem x1 variabila booleană condiţiei i �n , variabilă care ia valoarea 1 când este îndeplinită
şi ia valoarea 0 când nu mai este îndeplinită.
La primul subproces de calcul:
x := f ( x ) şi i := işi+1reluarea sa îi . asociem
( variabila
booleană y 1)

La al doilea subproces de calcul: Scrie : xn ( îi asociem variabila booleană y2 )


Fiecare dintre variabilele y1 , y2 iau valoarea 1 cînd subprocesul respectiv se realizează şi 0, atunci
când nu se realizează.
Funcţia booleană a procesului de calcul este f ( x1 , y1 , y2 ) , care ia valoarea 1 în cele două cazuri

47
Când se realizează cele două subprocesele de calcul.
Pentru primul subproces de calcul avem: x1 = 1 şi y1 = 1, y2 = 0
f ( 1,1, 0) = 1
Pentru al doilea subproces de calcul avem: x1 = 0 şi y1 = 0, y2 = 1
f ( 0, 0,1) = 1
Aplicăm formula disjunctivă : f ( x1 , y1 , y2 ) = x1 y1 + x2 y2 este formula de structură cu condiţia
i �n şi cele două subprocese de calcul. Avem schema:
Mai putem scrie y1 = uvw unde:
u - este variabila boolleeană asociată lui i := i +1
v - este variabila booleeană asociată lui x := f ( x )
w- variabila booleană asociată subprocesului de calcul care constă în reluarea întregului subproces
căruia i-a asociat variabila y1
Putem pune echivalenţa uy2 � y2 deoarece livrarea rezultatului final ( xn ) nu-l putem să-l
efectuăm fără a efectua subprocesul de calcul i := i +1 , deoarece de abia după ce i a parcurs
toate valorile dela 1 la n putem vorbi de livrarea rezultatului.
Formula de structură de mai sus devine :
f ( x1 , y1 , y2 ) = x1 y1 + x1 y2 = xuvw + x1uy2 = u ( x1vw + x1 y2 )
f ( x1 , y1 , y2 ) = u ( x1vw + x1 y2 ) este ultima formulă a algoritmului ciclic cu variabilă contor

u - este exprimat printr-un dreptunghi.


v - este exprimat printr-un dreptunghi.
w- este exprimat printr.o săgeată de ciclare
Valoarea iniţială a variabilei contor i poate fi orice număr
natural. Ea serveşte numai la numărarea paşilor.
Valoarea lui x := f ( x) din membrul drept al acestei relaţii se
iniţializează, iar apoi pe parcursul repetării formulei respective,
x din membrul drept are o valoare veche, necunoscută, iar x
din membrul stâng ia valoarea f ( x ) .

Exemple:
1). Să se descrie cu ajutorul schemei logice un algoritm de calculul sumei
numrerelor : x1 , x2 , x3 ,......., x100
48
Soluţie.
100

Să calculăm suma S = �xi , se va calcula din aproape în


i=1
aproape suma a câte două numere:
S0 = 0
S1 = S 0 + x1 A foat deci necesar să stabilim o formulă
S 2 = S1 + x2 de recurenţă iterativă:
S3 = S 2 + x3 Si = Si- 1 + xi unde i = 1, 2,3, 4,.....,100
........................
S = S100 = S99 + x100

Schema logică este un ciclu :

2). Să se descrie cu ajutorul unei scheme logice un algoritm pentru


1� a � �
calculul celui de al o 100 lea termen al şirului xi = �
x

� + �
�, unde x0 = a
2�
i - 1

xi- 1 �
Soluţie
Să presupunem că şirul x1 , x2 , x3 ,....., xi .... � l ; deci lim ( xi ) = lim ( xi- 1 ) = l
i �� 1��

1 � a�
l= �l+ �
� �
� � 2l 2 = l 2 + a � l 2 = a � l = a

2� l �

Deci avem că: lim ( xn ) = lim ( xn- 1 ) = l = a


n�� n��

x1 , x2 , x3 ,....., xn .... � l = a
Şirul ( xn ) n�1 este descrescător. Cu cât rangul termenului din şir
este mai mare cu atât mai mult el se apropie de valoarea
a . Termenul cu rangul 100, x100 este foarte apropiat de
valoarea lui a .
În modul acesta putem calcula rădăcina pătrată dintr-un număr
a > 0 , cu o aproximaţie oricât dorim de apropiată
( prin exces deoarece xn > a ).
Dacă 0 �a <1 atribuim lui x0 :=1

3). Să se descrie un algoritm şi să i se reprezinte schema logică pentru


calculul valorii polinomului: P ( x ) = a0 x + a1 x + a2 x + .... + an- 1 x + an
n n- 1 n- 2

Soluţie
Informaţia iniţială a algoritmului de calcul a lui P ( x ) , este alcătuită din coeficienţii polinomului
a0 , a1 , a2 , a3 ,....., an şi x .
Un procedeu practic este aducând polinomul la o formă de recurenţă :

49
P ( x) = ( ......( ( a0 x + a1 ) x + a2 ) x + a3 ) x +...... + an- 1 ) x + an
P0 = a0
P1 = P0 + a1
P2 = P1 x + a2
Notăm cu : Deci am obţinut:
P3 = P2 x + a3
........................
Pn = Pn- 1 x + an
Pi = Pi- 1 x + ai unde i = 1, 2,3,...., n
Algoritmul este ciclic.
Schema algoritmului este:

k
4). Să se scrie schema logică a algoritmului de tipărire a combinărilor Cn ,
pentru k = 1, 2,3,......, n unde n fiind dat.
Soluţie.

k n - k +1 k - 1
Se foloseşte formula de recurenţă: Cn = �
Cn , înseamnă
k
că algoritmul este ciclic.
În acest caz ne interesează rezultatele intermediare ca:
Cn1 , Cn2 , Cn3 , Cn4 ,.........., Cnn nu numai rezultatul final.
Schem logică este:

5). Să se tipărească 100 de termeni ai unei progresii geometrice cu primul


temen a şi raţia q
Soluţie.

Progresia geometrică este: a, aq, aq 2 , aq 3 ,....., aq 99 unde


uk = uk - 1q ; unde k = 1, 2,3, 4,.......,99
Relaţia de recurenţă este un algoritm ciclic.
Schema logică este:

50
6). Să se calculeze f : �� �, f ( x ) = x n
Soluţie.
f1 = x
f 2 = xx = xf1
f3 = xxx = xf 2
f 4 = xxxx = x ( xxx ) = xf 3
...........................................
f n = xf n- 1
Formula de recurenţă este:
f i := x �f i- 1 cu f 0 :=1 si i = 1, 2,3,..., n

Algoritmul este ciclic, a cărui schemă logică este:

7). Să se calculeze
Pn = n !
Soluţie

n ! = n ( n - 1) ! � Pn = n �
Pn- 1 , P0 = 0! = 1
Algoritmul este ciclic, a cărui schemă logică este:

8). Să se calculeze produsul a n numere: x1 , x2 , x3 , x4 ,...., xn .


n
P = x1 �
x2 �
x3 �
x4 � xn = �xi
......�
i =1
Soluţie

P1 = x1
P2 = x1 �
x2 = P1 �
x
P3 = x1 � x3 = ( x1 �
x2 � x2 ) x3 = P2 �
x3
..........................................................
Pn = Pn- 1 � xn
Formula de recurenţă este:
Pi = Pi- 1 � xi cu P1 = x1 si i = 1, 2,3, 4,....., n
51
Algoritmul este ciclic. Schema logică este:

9). Se dau vectorii : X = ( x1 , x2 , x3 , x4 ,....., xn ) ; Y = ( y1 , y2 , y3 , y4 ,......., yn ) cu


componentele reale.
n
Să se calculeze produsul scalar : P = �x y = x y + x y
i =1
i i 1 1 2 2 + x3 y3 +...... + xn yn

Soluţie.

P0 = 0
P1 = 0 + x1 y1 = P0 + x1 y1
P2 = 0144
+244 1 + x2 y2 = P1 + x2 y2
x1 y3
P1

P3 = 0144444
+ x141 + x2 y4
y244444 23+ x3 y3 = P2 + x3 y3
P2

................................................................
Pn = ( 0 + x1 y1 + x2 y2 + x3 y3 + ..... + xn- 1 yn- 1 ) + xn yn = Pn- 1 + xn yn
144444444444444442 44444444444444443
Pn- 1

� Pi = Pi- 1 + xi yi 0 =i0
cu Pşi =1, 2,3,....,
n
este formula de recurenţă
Algoritmul este ciclic. Avem schema logică a lui:

10). Să se determine numărul de numere pozitive dintr-un şir de numere:


x1 , x2 , x3 ,......, xn
Soluţie.
x
Trebuie testat i > 0 pentru fiecare i = 1, 2,3,...., n , deci se repetă aceste operaţii după n paşi.

52
Apoi după fiecare testare şi când condiţia este îndeplinită, este necesară o altă variabilă T , care
numără numerele pozitive cu iniţializarea T := 0 şi apoi T := T +1

11). Se dă şirul de numere x1 , x2 , x3 , x4 ,........., xn , să se determine numărul


termenilor şirului aparţinând
intervalului [ a, b ] şi să se calculeze produsul lor.
Soluţie.

Se testează dacă xi �[ a, b ] este echivalent cu


x �b şi x �a , aceste comparaţii se repetă
formând un ciclu după variabila contor i şi
alte două subcicluri după variabila contor T
Şi pentru numărul termenilor ce aparţin
intervalului dat se introduce o nouă variabilă
contor cu T := 0 şi T := T +1 , iar pentru a
calcula produsul lor, folosim relaţia de
recurenţă PT := xT PT - 1

12). Selecţionarea celui mai mare numă dintr-un şir de numere date:
a1 , a2 , a3 ,......., an date.

53
Soluţie.

m1 = max ( a1 )
m2 = max ( a1 , a2 ) = max ( m1 , a2 )
m3 = max ( a1, a2 , a3 ) = max ( m2 , a3 )
m4 = max = ( a1 , a2 , a3 , a4 ) = max ( m3 , a4 )
.....................................................................
mn = max ( a1 , a2 , a3 ,......, an- 1 , an ) = max ( mn- 1 , an )
deci avem:
�ai dacă mi- 1 < ai este un
M = mi = max ( mi- 1 ; ai ) = � �

� mi dacă mi- 1 �ai
algoritm ciclic

13). Algoritmul de ordonare crescător ( descrescător ) al unui şir de n


numere a1 , a2 , a3 , a4 ,........, an
Soluţie.
Fie şirul de numere a1 , a2 , a3 , a4 ,........, an memorat ăn calculator şi dorim ca aceşti termen ai
şrului să-i ordonăm în mod descrescător după valorile lor.
Comparăm pe ai cu ai+1
- dacă ai > ai +1 schimbăm ordinea lor, altfel le lăsăm pe locurile lor.Y � Z
- Repetăm acest procedeu până Y � X când se parcurge întregul şir a1 , a2 , a3 , a4 ,........, an
- La compararea ai cu ai +1 , luăm pentru i = 1, 2,3.4.5,....., n - 1 , deoarece i +1 = n � i = n - 1 .
Cum efectuăm schimbarea de ordine dintre doi termeni consecutivi ?
Să ne imagjnăm următoarea situaţie: X şi Y două variabile ce reprezintă două celule din
10 20
memoria calculatorului în care sunt înscrise numerele 10 respectiv 20.
X Y
Presupunem că vrem să permutăm cele două valori adică valoarea lui X să devină 20 , iar
valoarea lui Y să devină 10.
Dacă folosim grupul de instrucţiuni: X � Y şi Y � X , vom constata după efectuarea
instrucţiunii X � Y , valoarea lui X devine 20 şi valoare lui Y rămâne tot 20.
Instrucţiunea Y � X , nu modifică situaţia, deoarece prin executarea instrucţiunii X � Y , valoarea
iniţială 10 a lui X s-a pierdut. Pentru a evita acest lucru, folosim o variabilă auxiliară Z o altă
celulă de memorie. Grupul de instrucţiuni : Z � X şi X � Y şi Y � Z ( acest artificiu poartă
numele de regula celor trei scaune .)

54
Deci în şirul a1 , a2 , a3 , a4 ,........, an dacă ai > ai +1
executăm inversiubea prin instrucţiunile :
t � ai şi ai � ai +1 şi ai +1 � t
exemplu:
a1 ; a2 ; a3 ; a4 ; a5
82,9 - 33, 2 315,12 173,5 - 15
a1 > a2 nu facem schimbarea
a2 < a3 facem schimbarea
a1 ; a2 ; a3 ; a4 ; a5
82,9 315,12 - 33, 2 173,5 - 15
a3 < a4 facem schimbarea
a1 ; a2 ; a3 ; a4 ; a5
82,9 315,12 173,5 - 33, 2 - 15
a4 < a5 facem schimbarea
a1 ; a2 ; a3 ; a4 ; a5
82,9 315,12 173,5 - 15 - 33, 2
Aceste instrucţiuni se repetă la fiecare inversiune, deci
formează o structură ciclică.
Deşi s-a parcurs inspectarea întregului şir, el nu este
ordonat deoarece a1 < a2 din exemplul de mai sus.În
alte situaţii e posibil ca după inspectarea întregului şir
să avem surpriza să fie ordonat. Deci avem nevoie de
o altă informaţie dacă este sau nu este ordonat după
întreaga parcurgere. Informaţia este cu două valor da sau nu ( 1;0) ; deci notăm cu Inv o nouă
�Inv := 0 nici-o inversiune
variabilă booleeană ca o condiţie logică. � � această

�Inv := 1 a existatcel puţin o inversiune
variabilă este modificată şi testată. Deci acum putem întocmi şi schema logică a algoritmului.

Pentru a ordona şirul a1 , a2 , a3 , a4 ,........, an în mod crescător, înlocuim condiţia


ai < ai+1 cu condiţia a > ai +1
14 ). Să se tipărească elementele
matricei A = ( aij ) 1��
i n
1�j�m

Soluţie.

a11 a12 a13 .... a1n ��

� �

a21
� a22 a23 .... a2 n �


A =�
� �Avem două variabile

�.... .... .... .... .... �



� �


am1
� am 2 am 3 .... amn ��
contor: i �{1, 2,3,..., n} şi j �{1, 2,3,...., m}

55
Avem două condiţii logice: i �n şi j �m .
Pentru fiecare valoare întreagă a lui i dela 1 la n, se face ca j să parcurgă toate
valorile întregi dela 1 la m.
Este un algoritm ciclic deoarece se repetă paşii pentru i cât şi pentru j pentru a descrie
elementele matricei. Când i este fix şi j variabil se descrie o coloană. Când j este fix iar i este
variabil se descrie o linie
Putem construi schema logică
n m

15 ). Să se calculeze suma S = ��aij iar apoi să se tipărească suma.


i =1 j =1

Soluţie
n m
S = ��aij = a11 + a12 + a13 + ..... + a1m
i =1 j =1

a21 + a22 + a23 +..... + a2 m +


a31 + a32 + a33 +..... + a3 m +
.............................................
an1 + an 2 + an 3 +..... + anm
Se consuderă două variabile contor i �1, n şi j �1, m .
Pentru fiecare valoare întreagă a lui i dela 1 la n, se face ca j să parcurgă toate
valorile întregi dela 1 la m.
S11 = 0 + a11 �


S12 = a11 + a12 = S11 + a12 � �
� formează un ciclu când j =1, m şi pentru i = 1
S13 = a11 + a12 + a13 = S12 + a13 � �
�apoi se repetă acest ciclu de n ori pentru fiecare valoare a lui i
........................................... �




S1m = Sm- 1 + a1m �

Alte cicluri sunt S2 m = S2 m- 1 + a2 m ; S3m = S3m- 1 + a3m ;.......; S nm- 1 + anm

56
16 ). Să se scrie un algoritm pentru calculul sumei a două matrici.
A+B = S
Soluţie.
Conform definiţiei avem Sij = aij + bij ; unde i �1, m si j �1, n


a11 a12 a13 ...... a1n �� �
b11 b12 b13 ...... b1n ��

� � �
� �

a21 a22 a23 �

...... a2 n � �
b21 b22 b23 ...... b2 n �

� �şi B = � �
A =�
� �
� �

...
� ... ... ...... .... �

� �
...
� ... ... ...... .... �


� � � �


am1
� am 2 am3 ...... amn ��
� �

�m1 bm 2
b bm 3 ...... bmn ��


a11 + b11 a12 + b12 a13 + b13 .... a1n + b1n � �

� �

a21 + b21
� a22 + b22 a23 + b23 .... a2 n + b2 n �
� Avem două cicluri : unul inclus în

S = A + B =�
� �


...
� ... ... .... ... �
� celălalt, deoarece ciclul cu j = 1, n se
� �



am1 + bm1
� am 2 + bm 2 am 3 + bm 3 .... amn + bmn � � repetă şi el după

i =1, m de m ori

57
17 ). Înmulţirea matricilor înlănţuite şi pătrate.
Soluţie

a11 a12 a13 ...... a1n � �
b11 b12 b13 ...... b1 p �


� �
� �
� �

a21
� a22 a23 ...... a2n ��


b21
� b22 b23 ...... b2 p �


A =� �şi B = �
� �


...
� ... ... �
...... .... �
� �
...
� ... ... ...... .... �


� �
� �
� �



am1
� am 2 am 3 ...... amn �� �
bn1 bn 2 bn3 ...... bnp ��


c11 c12 c13 ...... c1 p �


� �

c21
� c22 c23 ...... c2 p �


Cmp = Amn �
Bnp =�
� �

...
� ... ... ...... .... �


� �



cm1 cm 2 cm 3 ...... cmp ��

n

Unde: cin = �aij b jk = ai1bik + ai 2b2 k + ai 3b3 k + ......... + ainbnk


j =1
c0 = 0
Notăm cik cu c j j = 1, n şi vom calcula: c1 = c0 + ai1 �
b1k = ai1 �
b1k
c2 = c1 + ai 2 �
b2 k
c3 = c2 + ai 3 �
b3k
.................................................
cn = cn- 1 + a1n � bnk

S-a obţinut un ciclu pentru un anumit i. Dar cik


este un element al matricei produs Cmp situat pe
linia i şi coloana k . Dăm lui k = 1 şi prin ciclul
alăturat obţinem ci1 , atribuim lui k := k +1 până la
k = p şi obţinem elementele ci1 , ci 2 , ci 3 ,......, cip ale
liniei din matricea produs. Deci trebuie repetat
ciclul de mai sus de p ori şi obţinem următorul
ciclu din schemă

58
Dăm lui i valoarea i := 1 şi se obţine :
c11.c12 , c13 ,......, c1 p elementele de pe linia I a matricei produs. Mărim pe i cu i := i +1 , până când
i = m şi se generează cele m linii ale matricei produs.

Schema întreagă a algoritmului de calculul produsului a două matrici este redată mai jos:

59
18 ). Să se determine câte elemente nule sunt pe fiecare linie dintr-
o matrice.
Soluţie.

Pentru j = 1, n se testează condiţia aij = 0 pentru


o linie i. Apoi se repetă acest ciclu după valorile
lui i =1, m . Se introduce variabila
T := 0, T := T +1 , ce totalizează numărul de
zerouri
Pe fiecare linie.

60
19 ). Să se afle numărul de elemente pozitive de pe fiecare coloană a
matricei.
Soluţie

Pentru i = 1, m se testează condiţia aij > 0 pentru


o coloană j. . Apoi se repetă acest ciclu după
valorile lui j = 1, n . Se introduce variabila
T := 0, T := T +1 , ce totalizează numărul de
elemente
Pozituve de pe fiecare coloană.

20). Fie A = { a1 , a2 , a3 ,......, am } si B = { b1 , b2 , b3 ,......, bn } două mulţimi. Să se


calculeze A �B = C

Soluţie.

61
C = { c1 , c2 , c3 ,....., c p } = { a1 , a2 , a3 ,......, am } �{ b1 , b2 , b3 ,......, bn } unde:
c1 = ai1 = b j1 , c2 = ai2 = b j2 , c3 = ai3 = b j3 ,......, ck = aik = b jk deci avem o condiţie logică: ai = b j
Aceste comparaţii se repetă după i =1, m şi j = 1, n , formând cicluri. Mai este necesară o altă
variabilă contor: k := 0, k := k +1 care numără elementele comune.

62

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