TABLOURI-BIDIMENSIONALE.ppt

15
Proiect la informatica TABLOURI BIDIMENSIONALE CLASA A X-A A

Transcript of TABLOURI-BIDIMENSIONALE.ppt

  • Proiect la informatica

    TABLOURI BIDIMENSIONALE

    CLASA A X-A A

  • Implementarea tablourilor bidimensionale*Un tablou bidimensional este o succesiune de locatii de memorie recunoscute prin acelasi identificator si prin pozitia fiecareia in cadrul sirului.

    *Pozitia este data printr-o suita de numere pozitive(indecsi), care reprezinta cele doua dimensiuni (linie si coloana).*Tabloul are un numar bine determinat de elemente si se identifica printr-un singur nume.*Valorile atribuite elementelor tabloului trebuie sa fie de acelasi tip.*Tablourile bidimensionale se numesc MATRICE.

  • Matrice* Descriere generala

    Sintaxa de declarare a unei matrice este: tip nume[m][n], unde: * tip tipul de data folosit; poate fi unul din tipurile de baza (int, float, char, ) sau un tip definit de utilizator (articole, obiecte) * nume numele prin care va fi referita matricea * m numarul de linii din matrice * n- numarul de coloane din matrice

    Exemple de declaratii: // matrice de intregi cu 10 linii si 10 coloane int vanzari[10][10]; // vector de valori reale float temperature[3][15];

    Memorarea matricelor se face, ca si in cazul vectorilor, intr-un spatiucontinuu de memorie. Numele matricei e un pointer catre adresa primuluielement.Elementele matricei sunt stocate in memorie linie dupa linie.

  • Matricea cu m linii si n coloane arata astfel:

  • Citirea si afisarea unui tablou bidimensional*Citirea elementelor unui tablou nu este posibila decat prin citirea fiecarui element. De aceea, la fel ca si in cazul vectorilor, operatia de citire a matricelor impune folosirea a doua secvente ciclice suprapuse. Acestea corespund indicelor liniei (i), respectiv coloanei (j). *Exemplu: Declararea unei matrice cu 10 linii i 9 coloane, cu elemente de tip intreg este:Int a[10][9]; Matricea are liniile 1,2,10 i coloanele 1, 2,,9 si, de exemplu, elementul de pe linia a treia si coloana a patra se adreseaz prin a[3][4]

    De multe ori nu tim cte linii i cte coloane va trebui s aib tabloul. n acest caz , tabloul se declar cu un numr maxim de linii i un numr maxim de coloane, n aa fel nct acesta s corespund oricrui set de date de intrare. Evident , ntr-un astfel de caz exist o risip de memorie intern.

  • Introducerea si afisarea valorilor*Programul alaturat citeste si afiseaza o matrice. Initial se citesc numarul de linii si coloane ale tabloului (m si n).

    *In memorie, tablourile sunt memorate pe linii (prima linie, a doua s.a.m.d).

    #includemain(){ int m,n,i,j,a[10][10];coutm;coutn;for (i=1; i

  • * Organizarea unui tablou bidimensional in memorie este reprezentata in figura de mai jos:

    Ex:Introducerea unui tablou de 6 linii si 8 coloane,avand ele-mente intregi,este de forma:Int x[6][8]

    Exemplu de instructiuni de atribuire: x[0][0]=23; x[0][5]=67;

  • Prelucrari asupra matricelorExemplu : Pentru o matrice data sa se calculeze suma elementelor care apartin unui interval dat (xinf=tab[i][j]).Prezentarea algoritmului:- se citesc capetele intervalului in care trebuie sa se incadreze elementele cautate in matrice xinfi xsup - se citesc dimensiunile matricei msi n - se citesc elementele matriceipentru i=0,m-1 executapentru j=0,n-1 executaciteste tab[i][j];sfarsit pentrusfarsit pentru- suma = 0;

    - Se parcurge matricea element cu element. Se testeaza daca elementul curent se incadreaza in intervalul dorit si n caz afirmativ elementul curent se aduna la suma calculata anteriorpentru i=0,m-1 executapentru j=0,n-1 executadaca tab[i][j] > xi si tab[i][j] < xf atuncisuma = suma + tab[i][j];sfarsit dacasfarsit pentru sfarsit pentru - afiseaza suma. Observatie : Variabila suma reprezinta suma calculata.

  • Interschimbarea de linii*Se citeste un tablou cu m linii si n coloane. *Se citesc,de asemenea,2 numerenaturale,distincte,x si y,cuprinse intre 1 si m. *Se cere sa se interschimbe linia x cu linia y. *La inceput vom afisa tabloul initial,apoi pe cel obtinut prin interschimbarealiniilor x si y.

  • Programul C/C++pentru interschimbarea a doua linii#include for(i=1;i
  • Matricea patratica * Se citeste un tablou cu n linii si n coloane, numere intregi. Un astfel de tablou, in care numarul liniilor este egal cu numarul coloanelor, poarta denumirea de matrice patratica. * O matrice patratica are doua diagonale: principala si secundara.

    * Pentru un tablou patratic A, numim diagonala principala, elementele aflate pe linia care uneste A[1][1] cu A[n][n].

    * Pentru un tablou patratic A, numim diagonala secundara, elementele aflate pe linia care uneste A[n][1] cu A[1][n]

  • *In figura de mai jos este reprezentat un tablou cu patru linii si patru coloane. In fiecare dintre casute este precizat indicele de linie si de coloan pentru fiecare element.

    Observatie! Se poate memora matricea incepand cu valoarea 1 pentru indicele de linie si de coloana.(Elementul A32 este elementul de pe linia 3 ,coloana2).

    Elementele diagonalei principale(rosu),elementele celei secundare(albastru).

    A11A12A13A14A21A22A23A24A31A32A33A34A41A42A43A44

  • Matrice simetrica * In practica apar cazuri in care matricele au anumite caracteristici care permit o stocare mai eficienta decat cea standard.Un astfel de exemplu este reprezentat de matricea simetrica. Matricele simetrice sunt matrice patratice in care corespondentelede sub si de peste diagonala principala sunt egale (adica m[i][j] = m[j][i]pentru oricare i si j).

    1 23 4 2 56 7 3 48 9 7 89 10 Matricea va fi liniarizata sub forma: 1 2 3 4| 5 6 7| 8 9 10

  • *Calculul pozitiei elementului i,j dintr-o matrice dedimensiune n se face dupa formula:

    p=(n-1)+(n-2)++(n-i)+j=i*n-(1+2++i)+j=i*n-i*(n+1)/2+j,pentru ji,atunci se interschimba i cu j.

  • BIBLIOGRAFIE * Tudor Sorin Informatic, Varianta C++, Manual pentru clasa a XI-a, Editura L&S Infomat, Bucuresti, 2006. *Laborator\Programarea calculatoarelor-Prf.A.Runceanu. Grupa:VIRTUALART Duta Cristina Vasile Raluca Marinescu Catalin Ivascu Constantin Matei Alexandru Colegiul National Vladimir Streinu Gaesti-Dambovita