Un vector rar cu elemente întregi (vector cu foarte multe elemente nule) este păstrat în mod economic prin:
- numărul total de componente n, incluzând şi componentele nule;
- numărul de componente nenule nn;
- vectorul componentelor nenule x;
- vectorul sortat al poziţiilor componentelor nenule poz.
Astfel vectorul rar v = [0 0 6 0 0 0 0 2 0 5]| este caracterizat prin: n=10, nn=3, x=[6 2 5] şi poz=[2 7 9].
- Introduceţi tipul SparceArray printr-o structura;
- definiţi două funcţii care: crează un vector rar pe baza structurii compactate vrar dată că parametru şi, respectiv, a doua funcţie compactează un vector v cu n componente, creând o structura vector rar compactat
int *decomp(SparceArray sa); SparceArray comp(int n, int *v)
Implementati comandă aduna
nf1 nf2 n1 n2
care crează mai mulţi vectori rari cu lungimi cuprinse între n1 şi n2 prin adunarea vectorilor rari (element cu element) de aceeaşi lungime citiţi din fişierul cu numele nf1, unde se află sub formă compactată. Vectorii rari sumă sunt compactaţi şi scrişi în fişierul cu numele nf2.
Atragem atenţia că articolele structuri din cele două fişiere sunt de lungime variabilă.