Sunteți pe pagina 1din 3

Tema nr.

n fiierele a.txt, b.txt, aplusb.txt, aorib.txt postate pe pagina


laboratorului, sunt memorate, pentru 4 matrici rare (cu puine
elemente aij 0) i 4 vectori, urmtoarele elemente:
- n dimensiunea datelor,
- bi , i=1,2, , n elementele vectorului b n ,
- aij 0, i, j - elementele nenule din matricea rar A nn ,
indicii de linie i indicii de coloan ai respectivului element.

Folosind fiierele ataate, s se citeasc dimensiunea matricilor,


vectorul b i s se genereze structurile de date necesare pentru
memorarea economic a matricii rare (schemele economice de
memorare sunt descrise mai jos). Se presupune c elementele
nenule ale matricii sunt plasate aleator n fiier (nu sunt ordonate
dup indicii de linie sau de coloan, sau altfel). Matricile din
fiierele a.txt i b.txt au cel mult 10 elemente nenule pe fiecare
linie (s se verifice !!!).
Fie A, B nn dou matrici rare i x n un vector cu
elemente reale. Folosind cele 2 scheme de memorare rar
prezentate mai jos s se calculeze:
- A+B suma matricilor,
- A*B produsul matricilor,
- A*x produsul matrice vector.

S se verifice c suma/produsul matricilor din fisierele a.txt i b.txt


este matricea din fiierul aplusb.txt/aorib.txt. Pentru xi=1, i=1,,n,
s se verifice c A*x (A fiind una din matricile memorate n a.txt
sau b.txt) este chiar vectorul b din acelai fiier.

Observaii: 1) La rezolvarea problemelor de mai sus s nu se


recurg la alocarea de matrici clasice i nici s nu se foloseasc o
funcie val(i,j) care returneaz pentru orice (i,j) valoarea
elementului corespunztor din matrice.

1
2) La adunarea matricilor din a.txt cu b.txt rezultatul este o matrice
cu maxim 20 elemente nenule pe linie. n cazul nmulirii gradul de
umplere al matricii pe linii nu poate fi precizat dinainte. Rezultatul
nmulirii a dou matrici va fi memorat ntr-un vector de liste
indiferent de schema de memorare folosit pentru matricile de
intrare.
3) Cei care aleg o alt schem de memorare a matricilor rare
trebuie s prezinte suplimentar un fiier documentaie care s
explice schema folosit i s prezinte un exemplu (cel mult 55, se
poate folosi exemplul din tem) care s precizeze coninutul
structurilor de date utilizate pentru memorarea matricii rare.

Memorarea matricilor rare (scheme de memorare economic)

Pentru matricile rare se memoreaz doar elementele nenule ale


matricii i informaii privind indicii de linie i de coloan ale
respectivelor elemente astfel nct s putem reface toat informaia
din matricea n form clasic.

O prim schem de memorare ine cont c matricile au un numr


maxim fix de elemente pe fiecare linie, respectiv 10. n acest caz,
matricea va fi memorat economic ntr-o matrice Aec nnmax de
elemente de forma (val 0, indice de coloan). Fiecare linie a
matricii Aec va memora elementele nenule de pe linia
corespunztoare din matricea A.

Un al doilea mod de a memora o matrice rar este s se memoreze


ca un vector de liste, elementele nenule ale unei linii a matricii A
se memoreaz ntr-o list.
Lista[i] = memoreaz elementele nenule aij 0 ale liniei i a
matricii A

Nodurile din Lista[i] sunt de forma:

2
(valoare nenul aij 0, indice de coloan j)
Exemplu:

Matricea:

102.5 0.0 2.5 0.0 0.0


3.5104.88 1.05 0.0 0.33

A 0.00.0100.0 0.0 0.0

0.0 1.3 0.0 101.3 0.0
0.73 0.0 0.0 1.5 102.23

se memoreaz astfel:

102.5,0 2.5, 2 0, 1
0, 1

3.5,0 104.88,1 0.33,4
1.05, 2
Aec 100.0, 2 0, 1 0, 1
0, 1

1.3,0 101.3, 3 0, 1
0, 1
0.73,0 1.5, 3 102.23,4 0, 1

sau
Aec [0] 102.5,0 , 2.5, 2
Aec [1] 3.5,0 , 104.88,1 , 1.05, 2 , 0.33,4
Aec [2] 100.0, 2
Aec [3] 1.3,0 , 101.3, 3
Aec [4] 0.73,0 , 1.5, 3 , 102.23,4

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