Comprimare matrice - viață-prog
Exemplu. 3.2. Scrie programul care „strâmtori“ matrice întreg de 10 elemente, de a scoate din ea elementele mai mici decât o valoare predeterminată. Eliberat la sfârșitul elementelor de matrice umple cu zerouri.
6 -8 15 9 -1 3 5 -10 12 2
Să presupunem că doriți să-l eliminați din toate elementele a căror valoare este mai mică de 5. Rezultatul ar trebui să fie de forma
15 9 5 6 12 0 0 0 0 0
Datele inițiale sunt specificate și o serie de numere, rezultatul - matrice transformat.
Fig. 3.2. Compresia folosind matrice suplimentară
mas tip = array [1. n] din întreg;
writeln ( „Introduceți elementele de matrice“);
pentru i: = 1 la n citesc (a [i]);
în cazul în care un [i]> = x apoi începe
pentru i: = 1 la n do scriere (a [i]: 4);
Resetarea „coada“ de matrice se produce in mod natural, deoarece variabilele globale sunt resetate în Pascal.
Cu toate acestea, pentru matricele de mari dimensiuni de alocare de memorie dual poate fi prea risipitor. Prin urmare, se prezintă o versiune a programului, în care se realizează transformarea matrice „pe loc“.
Algoritmul acestui program este după cum urmează:
1. Privind prin matrice pentru a determina numărul de primul dintre elementele care urmează să fie șterse.
2. Dacă există, mutați fiecare element succesiv în matrice pentru prima poziție „liber“, resetarea restul de matrice.
Ilustrarea algoritmului este prezentată în Fig. 3.3.
Fig. 3.3. Comprimare matrice de „la fața locului“
Următoarea variabilă de program j în același mod ca și în cel precedent, este folosit pentru a specifica poziția, în care elementul următor al șirului. După un alt element de deplasare este incrementat la următorul element matrice corespunzătoare a fost plasat într-o poziție adiacentă:
mas tip = array [1. n] din întreg;