Sunteți pe pagina 1din 16

TABLOURI

TABLOURI UNIDIMENSIONALE

TABLOURI BIDIMENSIONALE

TABLOURI UNIDIMENSIONALE
Definiie
Declararea unui tablou unidimensional Iniializarea tablourilor

Citirea elementelor unui tablou unidimensional


Afiarea i parcurgerea elementelor unui tablou unidimensional Prelucrarea datelor din tabolouri unidimensionale (element cu element)

ieire

napoi

DEFINIIE

Un tablou este o colecie de date de acelai tip aranjate contiguu n memorie.

napoi la cuprins

DECLARAREA UNUI TABLOU UNIDIMENSIONAL

tip_baz nume_tablou[numr componente]; unde: - tip_baz: precizeaz tipul datelor din tablu; - nume_tablou: precizeaz numele tabloului; - numr componente: precizeaz cte component conine tabloul (dimensiunea). exemplu: int x[20]; - s-a declarat un tablou unidimensional cu numele x - nume_tablou: precizeaz numele tabloului; - numr componente: precizeaz cte component conine tabloul (dimensiunea).

napoi la cuprins

INIIALIZAREA TABLOURILOR

Declaraia unui tablou poate fi urmat de o seven de iniializare. Secvena de iniializare este format dintr-o pereche de acolade ntre care se pun valori ale tipului de baz separate prin virgul.

exemple: float y[ ]={6.1, 7.4e, 8e-2, -3}; - s-a declarat un tablou unidimensional cu numele y; - datele din tablou vor fi de tipul float; - are 4 componente; - dup aceast declaraie: y[0]=6.1; y[1]=7.4e; y[2]=8e-2, y[3]=-3. int z[5]={6, 7, 8};

napoi la cuprins

CITIREA ELEMENTELOR UNUI TABLOU UNIDIMENSIONAL

cout<<n= ; cin>>n; for(i=1; i<=n; i++) { cout<<x[<<i<<]= ; cin>>x[i]; }

napoi la cuprins

AFIAREA I PARCURGEREA ELEMENTELOR UNUI TABLOU UNIDIMENSIONAL

afiarea: for(i=1; i<=n; i++) cout<<x[i]<< ;

parcurgerea: for(i=1; i<=n; i++)............

napoi la cuprins

PRELUCRAREA DATELOR DIN TABLOU UNIDIMENSIONAL (ELEMENT CU ELEMENT)


- introducerea datelor direct de la tastatur sau dintr-un fiier; - afiarea valorilor pe ecran sau intr-un fiier; - verificarea unor proprieti; - determinarea unor valori medii; - compararea valorilor.

napoi la cuprins

TABLOURI BIDIMENSIONALE

Definiie

Citirea elementelor unui tablou bidimensional

Afiarea matricelor Prelucrri asupra matricelor Operaii din algebra matriceal

ieire

napoi

DEFINIIE
Tablou bidimensional = succesiune de locaii de memorie recunoscute prin acelai identificator i prin poziia fiecreia n cadrul irului. Poziia este dat printr-o suit de dou numere pozitive (indeci), care reprezint cele dou dimensiuni (linie i coloan). Valorile atribuite elementelor tabloului trebuie s fie de acelai tip. Organizarea unui tablou bidimensional n memorie este de reprezentat n figura de mai jos: Ex. Introducerea unui[0] tablou de 6 linii i 8 coloane (6 x 8) avnd elemente ntregi 23 67 este de forma:
[1] [2] [3] [4] [5]

[0]

[1]

[2]

[3]

[4]

[5]

[6]

[7]

napoi la cuprins

CITIREA ELEMENTELOR UNUI TABLOU BIDIMENSIONAL


Citirea elementelor unui tablou nu este posibil dect prin citirea fiecrui element. De aceea, la fel ca i n cazul vectorilor operaia de citire a matricilor impune folosirea a dou secvene ciclice suprapuse. Acestea corespund indicelor liniei (i), respectiv coloanei (j). Exemplu: int tab[5][5]; int i,j; printf(\n Introduceti dimensiunile matricei (m si n) ); scanf(%d %d,&m,&n); for(i=0; i<m; i++) for(j=0; j<n; j++) { printf(\n tab[%d][%d] = : ,i,j); //se va afisa tab[i][j]= i se ateapt scanf(%d,&tab[i][j]); //introducerea valorii care se atribuie } //variabilei tab[i][j]

napoi la cuprins

Obs: Dimensiunile efective ale tabloului introdus de ctre utilizator (m si n) nu trebuie s depeasc dimensiunile cu care a fost declarat tabloul bidimensional. Identificarea zonei de memorie unde va fi reinut tabloul se face cu ajutorul numelui tabloului. Acesta are ca valoare adresa primului element din tablou, tab[i][j]), ceea ce l deosebete de identificatorul folosit pentru variabilele simple care nu reprezint o adres.

CITIREA ELEMENTELOR UNUI TABLOU BIDIMENSIONAL

&tab tab &tab[0][0];


Instruciunea printf( .......) din interiorul secvenei ciclice cu contorizare va afia numai numele variabilei care se citete. Instruciunea scanf(.......) va prelua valoarea citit de la tastatur i o va memora (nscrie) n poziia respectiv (tab[i][j]). Un exemplu frecvent ntlnit de citire eronat a unei matrici este de forma: for(i=0; i<m; i++) for(j=0; j<n; j++) { printf(\n tab[%d][%d] = %d: ,i,j, tab[i][j]); scanf(%d,&tab[i][j]); } Se execut mai nti instruciunea de afiare. De exemplu pt i=0 i j=0 rezultatul interpretrii acesteia este afiarea: tab[0][0] = -30731. n continuare se va executa instruciunea de citire care va ateapta introducerea valorii care se va memora n locaia tab[0][0].Valoarea afiat 30731 provine din faptul c n momentul afirii variabila tab[0][0] nu este iniializat i de aceea se va interpreta coninutul acestei locaii ca o variabil ntreag i apoi este afiat. Variabila tab a fost declarat anterior ca avnd elemente ntregi.

napoi la cuprins

AFIAREA MATRICELOR
Ex. S se afieze matricea sub form de tablou rectangular(ca o matrice). Aceasta a fost iniializat anterior direct n cadrul instruciunii de declarare. int tab[5][5]={{1,2,3,4,5}, {6,7,8,9,10}, {11,12,13,14,15}, {16,17,18,19,20}, {21,22,23,24,24}}; printf(\n Elementele vectorului sunt: ); for(i=0; i<5; i++) { for(j=0; j<5; j++) printf(%4d, tab[i][j]); printf(\n); }

napoi la cuprins

PRELUCRRI ASUPRA MATRICELOR


Ex. Pentru o matrice dat s se calculeze suma elementelor care aparin unui interval dat (xinf<=tab[i][j] &&
xsup>=tab[i][j]).

Prezentarea algoritmului : - se citesc capetele intervalului n care trebuie s se ncadreze elementele cautate n matrice: xinf i xsup - se citesc dimensiunile matricei: m i n - se citesc elementele matricei: pentru i=0,m-1 execut pentru j=0,n-1 execut citete tab[i][j]; sfrit pentru sfrit pentru - suma = 0; - se parcurge matricea element cu element. Se testeaz dac elementul curent se ncadreaz n intervalul dorit i n caz afirmativ elementul curent se adun la suma calculat anterior pentru i=0,m-1 execut pentru j=0,n-1 execut dac tab[i][j] > xi i tab[i][j] < xf atunci suma = suma + tab[i][j]; sfrit dac sfrit pentru sfrit pentru - afieaz suma Obs. Variabila suma reprezint suma calculat. napoi la cuprins

OPERAII DIN ALGEBRA MATRICEAL


Ex. S se determine matricea transpus a unei matrice citit de la tastatur (matr_A) - se citesc dimensiunile matricelor: m i n - se citesc elementele matricei iniiale pentru i=0,m-1 execut pentru j=0,n-1 execut citete matr_A[i][j]; sfrit pentru sfrit pentru

- ecou - se parcurge matricea iniial element cu element, elementul cu indicele [i][j] devenind elementul cu indicele [j][i] n matricea final pentru i=0,m-1 execut pentru j=0,n-1 execut matr_B[i][j] = matr_A[j][i] sfrit pentru sfrit pentru - se afieaz elementele matricei finale (matricea transpus) pentru i=0,n-1 execut pentru j=0,m-1 execut afieaz matr_B[i][j]; sfrit pentru sfrit pentru

napoi la cuprins

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