Tablouri unidimensionale – Vectori

Vectorii sau tablourile unidimensionale sunt structuri de date bine definite si organizate in memorie. Cu ajutorul acestora, se pot pastra in memorie si accesa ulterior mai multe variabile, fara a fi nevoie de retinerea explicita a fiecareia dintre ele.

Vectorii se folosesc, cel mai adesea, cand numarul de variabile necesare intr-o problema variaza sau este de dimensiune mare. In acest caz, se doreste utilizarea un vector , in care punem cate variabile sunt necesare. In problemele noastre, ne vor interesa vectorii declarati prin numarul maxim posibil de elemente, cu memoria alocata local.

Astfel, pentru declararea unui vector se foloseste urmatoarea structura:

tip_vector nume_vector[dimensiune maxima vector];

Exemple uzuale :

                int v[100];

  • int – tip intreg
  • v – numele vectorului
  • [100] – intre paranteze patrate se pune numarul maxim posibil de elemente

Asemanator float a[100], double b[20].

Pentru a atribui un element folosim :

v[1] = 3; v[2] = 4, v[6] = 29, etc.

Pentru citirea unui vector de n elemente, unde n este citit de la tastatura, se foloseste urmatoarea portiune de program :

Se incepe citirea de la 1, primul element fiind salvat in v[1]. (La siruri de caractere, inceperea se face de la 0.) Elevul poate decide de pe ce pozitie sa inceapa : 1 sau 0.

Pentru a accesa elementul de pe pozitia K vom folosi v[K].

Afisarea se face in mod asemanator, citirii:

Un vector v[6] are urmatoarea structura:

Astfel, cu ajutorul vectorilor, putem face modificari asupra unui sir de numere intregi, salvand fiecare modificare, pentru a afisa rezultatul obtinut. De asemenea, un caz foarte uzual, in care sunt folositi vectori, este atunci cand, se afiseaza elemente citite de la tastatura, intr-o ordine care nu coincide cu ordinea de citire.

Exemplu : afisarea in ordine inversa a unui sir citit de la tastatura( In acest caz, ultimul element afisat, este primul citit, deci, acesta trebuie retinut intr-o variabila. Vectorul ofera aceasta posibilitate, primul element fiind salvat pe prima pozitie din vector).

Problemele cu siruri, in care nu este posibila parcurgerea o singura data a sirului, se reduc si ele la lucrul cu vectori, sirurile fiind salvate in vectori. Memorarea sirurilor in tablouri unidimensionale face posibila parcurgerea sirurilor de mai multe ori.

Exemple de probleme in care s-ar putea folosi vectori :

  1.  Ordonarea unui sir citit de la tastatura in ordine crescatoare sau descrescatoare.
  2.  Sa se afiseze maximul unui sir citit de la tastatura.
  3.  Sa se afiseze elementele pare ale unui sir citit de la tastatura, dupa care elementele impare ale acestuia separate prin cate un spatiu.
  4.  Sa se gaseasca cel mai mare divizor comun ( cel mai mic multiplu comun) a unui sir citit de la tastatura.

Tablouri bidimensionale – Matrici

O matrice este o forma de organziare a datelor de acelasi tip. O matrice reprezinta un tablou bidimensional in care sunt stocate date de acelasi tip. Elementele dintr-o matrice pot fi identificate dupa linia si coloana pe care se afla.

Se numeste matrice cu m linii si n coloane, un tablou cu m linii si n coloane.

Pentru m=4 si n=3 se obtine o matrice cu 4 linii si 3 coloane, spre exemplu:

In exemplul dat, numarul 35 se afla pe linia 1, coloana 1, pe cand 13 se afla pe linia 3, coloana 2. Am considerat numerotarea liniilor si coloanelor incepand de la 1. Daca matricea se va citi, luand doi contori ( i si j) cu valori de la 0 la m – 1 (pentru m linii), respectiv de la 0 la n – 1 (pentrul n coloane), atunci 35 se va afla pe linia 0 si coloana 0.

In limbajul C++ declararea unei matrici se realizeaza prin specificarea tipului elementelor din matricii, indentificatorul matricii, urmat apoi de dimensiunea acesteia (numarul de linii si de coloane) intre paranteze drepte.

Spre exemplu:

  • int A[4][3]; (declara o matrice de 4 linii si 3 coloane continand numere intregi)
  • float B[5][10]; (declara o matrice de 5 linii si 10 coloane continand numere reale)
  • char C[20][12]; (declara o matrice de 20 de linii si 12 coloane continand caractere alfanumerice)

Observatie: Numerotarea liniilor si coloanelor unei matrici incepe de la valoarea 0. Astfel, prima linie si prima coloana a matricii este linia si coloana 0, a doua coloana este 1, etc. 

Observatie: Putem numerota liniile si coloanele de la 1, in acest caz, pentru a nu avea probleme de memorie, declaram matricea cu un numar in plus de linii si coloane. Astfel, daca vrem sa salvam o matrice cu 3 linii si 4 coloane, incepand numerotarea de la 1, vom scrie m[4][5] in loc de m[3][4].

Mai jos putem vedea citirea si afisare unei matrici salvata cu numerotoarea incepand de la 1.

Exemplu:

Matricile au un caz particular, atunci cand numarul de linii este egal cu numarul de coloane, acele matrici numindu-se matrici patratice.

Spor la lucru! Daca aveti intrebari nu ezitati sa le lasati in comentarii, va vom raspunde cat de repede putem 🙂