SlideShare a Scribd company logo
1 of 15
Proiect la informatica
    TABLOURI
 BIDIMENSIONALE


             CLASA A X-A A
I mplementarea tablourilor
               bidimensionale
                                *Tabloul are un numar bine
*Un tablou bidimensional
                                   determinat de elemente si
  este o succesiune de
  locatii de memorie               se identifica printr-un
  recunoscute prin acelasi         singur nume.
  identificator si prin         *Valorile atribuite
  pozitia fiecareia in cadrul      elementelor tabloului
  sirului.                         trebuie sa fie de acelasi
                                   tip.
*Pozitia este data printr-o     *Tablourile bidimensionale se
  suita de numere                  numesc MATRICE.
  pozitive(indecsi), care
  reprezinta cele doua
  dimensiuni (linie si
  coloana).
M atrice
* 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 spatiu
continuu de memorie. Numele matricei e un pointer catre adresa primului
element.Elementele matricei sunt stocate in memorie linie dupa linie.
Matricea cu m linii si n coloane arata
astfel:
C itirea 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 câte linii şi câte coloane va trebui să aibă tabloul. În
   acest caz , tabloul se declară cu un număr maxim de linii şi un număr
   maxim de coloane, în aşa fel încât acesta să corespundă oricărui set de
   date de intrare. Evident , într-un astfel de caz există o risipă de
   memorie internă.
I ntroducerea si afisarea valorilor
*Programul alaturat citeste si     #include<iostream.h>
   afiseaza o matrice. Initial     main()
   se citesc numarul de linii si   { int m,n,i,j,a[10][10];
   coloane ale tabloului (m si     cout<<"m="; cin>>m;
   n).                             cout<<"n="; cin>>n;
                                   for (i=1; i<=m;i++)
                                   for (j=1; j<=n; j++)
                                   { cout<<"a["<<i<<','<<j<<"]=";
*In memorie, tablourile sunt
                                   cin>>a[i][j];}
   memorate pe linii (prima
                                   for (i=1;i<=m;i++)
   linie, a doua s.a.m.d).
                                   { for (j=1;j<=n;j++)
                                   cout<<a[i][j]<<' ';
                                   cout<<endl; } }
* 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;
              X [0 ] [1 ] [2 ] [3 ] [4 ] [5 ] [6 ] [7 ]

                  [0 ]   23      67

                  [1 ]

                  [2 ]

                  [3 ]

                  [4 ]

                  [5 ]
P relucrari asupra matricelor
Exemplu : Pentru o matrice data             - Se parcurge matricea element cu
    sa se calculeze suma                        element. Se testeaza daca
    elementelor care apartin unui               elementul curent se incadreaza in
    interval dat (xinf<=tab[i][j] &&            intervalul dorit si în caz afirmativ
    xsup>=tab[i][j]).                           elementul curent se aduna la
Prezentarea algoritmului :                      suma calculata anterior
- se citesc capetele intervalului in        pentru i=0,m-1 executa
    care trebuie sa se incadreze                pentru j=0,n-1 executa
    elementele cautate in matrice
                                                       daca tab[i][j] > xi si tab[i][j]
xinf şi xsup                                    < xf atunci
- se citesc dimensiunile matricei                      suma = suma + tab[i][j];
m si n                                                 sfarsit daca
- se citesc elementele matricei                 sfarsit pentru
pentru i=0,m-1 executa                       sfarsit pentru
    pentru j=0,n-1 executa                   - afiseaza suma.
                       citeste tab[i][j];    Observatie : Variabila suma
                       sfarsit pentru           reprezinta suma calculata.
           sfarsit pentru
I nterschimbarea de linii
*Se citeste un tablou cu m linii si n
coloane.
*Se citesc,de asemenea,2 numere
naturale,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
 interschimbarea
liniilor x si y.
P rogramul C / ++pentru interschimbarea a
               C
                 doua linii
#include<iostream.h>               for(i=1;i<=m;i++)
main()                             {for(j=1;j<=n;j++)

{                                  cout<<a[i][j]<<``;
int m,n,i,j,aux,a[10][10];         cout<<endl;}
cout<<``m=``;cin>>m;               {
cout<<``n=``;cin>>n;                aux=a[x][j];
for(i=1;i<=m;i++)                   a[x][j]=a[y][j]
for(j=1;j<=n;j++)                   a[y][j]=aux;}
{                                   cout<<endl;
cout<<``a[``<<i<<`,`<<j<<``]=``;    for(i=1;i<=m;i++)
cin>>a[i][j];                       {for(j=1;j<=n;j++)
}                                    cout<<a[i][j]<<``;
cout<<``x=``;cin>>x;                 cout<<endl;
cout<<``y=``;cin>>y;                 }}
cout<<endl;
M atricea 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).
                   A11     A12    A13     A14


                   A21     A22    A23     A24


                   A31     A32    A33     A34


                   A41     A42    A43     A44
M atrice 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 corespondentele
de sub si de peste diagonala principala sunt egale (adica m[i][j] = m[j][i]
pentru oricare i si j).

                                 1   2   3 4
                                 2   5   6 7
                                 3   4   8 9
                                 7   8   9 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 de
dimensiune 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 j<=i.

       Daca j>i,atunci se interschimba i cu j.
B I B L I OGR A F I E
* Tudor Sorin – Informatică, Varianta C++, Manual pentru
  clasa a XI-a, Editura L&S Infomat, Bucuresti, 2006.
*LaboratorProgramarea calculatoarelor-Prf.A.Runceanu.

More Related Content

What's hot (20)

Tipuri de date tablou
Tipuri de date tablouTipuri de date tablou
Tipuri de date tablou
 
Metoda trierii(1)
Metoda trierii(1)Metoda trierii(1)
Metoda trierii(1)
 
ppt meserii.ppt
ppt meserii.pptppt meserii.ppt
ppt meserii.ppt
 
Radioactivitatea
Radioactivitatea Radioactivitatea
Radioactivitatea
 
Imperiul habsburgic
Imperiul habsburgicImperiul habsburgic
Imperiul habsburgic
 
Functii aplicatii practice
Functii aplicatii practiceFunctii aplicatii practice
Functii aplicatii practice
 
Fenomene electrice.-campul-electr.
Fenomene electrice.-campul-electr.Fenomene electrice.-campul-electr.
Fenomene electrice.-campul-electr.
 
Functii si-proceduri
Functii si-proceduriFunctii si-proceduri
Functii si-proceduri
 
Iiimostenireaculturalaaantichitatii
IiimostenireaculturalaaantichitatiiIiimostenireaculturalaaantichitatii
Iiimostenireaculturalaaantichitatii
 
Proiect cl ix
Proiect cl ixProiect cl ix
Proiect cl ix
 
Anatomia sistemului nervos proiect dppd
Anatomia sistemului nervos proiect dppdAnatomia sistemului nervos proiect dppd
Anatomia sistemului nervos proiect dppd
 
Frangulea beatrice nicoleta
Frangulea beatrice nicoletaFrangulea beatrice nicoleta
Frangulea beatrice nicoleta
 
Formule matematice
Formule matematiceFormule matematice
Formule matematice
 
Sistem nervos
Sistem nervosSistem nervos
Sistem nervos
 
Apele Republicii Moldova
Apele Republicii MoldovaApele Republicii Moldova
Apele Republicii Moldova
 
Matematica in tara_povestilor
Matematica in tara_povestilorMatematica in tara_povestilor
Matematica in tara_povestilor
 
Carbonul
CarbonulCarbonul
Carbonul
 
Calciul
CalciulCalciul
Calciul
 
Regele Carol I
Regele Carol IRegele Carol I
Regele Carol I
 
Boli ale sistemului digestiv la om
Boli ale sistemului digestiv la omBoli ale sistemului digestiv la om
Boli ale sistemului digestiv la om
 

Viewers also liked

1.5.Cuantizarea imaginilor
1.5.Cuantizarea imaginilor1.5.Cuantizarea imaginilor
1.5.Cuantizarea imaginilorVasile Filat
 
Probacl IX
Probacl IXProbacl IX
Probacl IXClaudia
 
Pld 2011 2012 fizica cl.7
Pld 2011 2012 fizica cl.7Pld 2011 2012 fizica cl.7
Pld 2011 2012 fizica cl.7Grigore Grama
 
68 De Pagini De Probleme Rezolvate Si Teorie In Pascal
68 De Pagini De Probleme Rezolvate Si Teorie In Pascal68 De Pagini De Probleme Rezolvate Si Teorie In Pascal
68 De Pagini De Probleme Rezolvate Si Teorie In Pascalguest274e8
 
Codificarea şi decodificarea mesajelor în sistemele de transmisie a informaţiei
Codificarea şi decodificarea mesajelor în sistemele de transmisie a informaţieiCodificarea şi decodificarea mesajelor în sistemele de transmisie a informaţiei
Codificarea şi decodificarea mesajelor în sistemele de transmisie a informaţieiColegiul de Industrie Usoara
 

Viewers also liked (10)

Vectori
VectoriVectori
Vectori
 
Cuntizarea imaginilor
Cuntizarea imaginilorCuntizarea imaginilor
Cuntizarea imaginilor
 
Data
DataData
Data
 
Fisa
FisaFisa
Fisa
 
1.5.Cuantizarea imaginilor
1.5.Cuantizarea imaginilor1.5.Cuantizarea imaginilor
1.5.Cuantizarea imaginilor
 
Probacl IX
Probacl IXProbacl IX
Probacl IX
 
Pld 2011 2012 fizica cl.7
Pld 2011 2012 fizica cl.7Pld 2011 2012 fizica cl.7
Pld 2011 2012 fizica cl.7
 
Recursivitate
RecursivitateRecursivitate
Recursivitate
 
68 De Pagini De Probleme Rezolvate Si Teorie In Pascal
68 De Pagini De Probleme Rezolvate Si Teorie In Pascal68 De Pagini De Probleme Rezolvate Si Teorie In Pascal
68 De Pagini De Probleme Rezolvate Si Teorie In Pascal
 
Codificarea şi decodificarea mesajelor în sistemele de transmisie a informaţiei
Codificarea şi decodificarea mesajelor în sistemele de transmisie a informaţieiCodificarea şi decodificarea mesajelor în sistemele de transmisie a informaţiei
Codificarea şi decodificarea mesajelor în sistemele de transmisie a informaţiei
 

Similar to Tablouri bidimensionale

00007 backtracking
00007 backtracking00007 backtracking
00007 backtrackingAlly Le
 
T 1 grafuri_2017_2018_sem_ii_rezolvat
T 1 grafuri_2017_2018_sem_ii_rezolvatT 1 grafuri_2017_2018_sem_ii_rezolvat
T 1 grafuri_2017_2018_sem_ii_rezolvatOctavian Prangate
 
E d informatica_2020_sp_mi_c_var_test_01
E d informatica_2020_sp_mi_c_var_test_01E d informatica_2020_sp_mi_c_var_test_01
E d informatica_2020_sp_mi_c_var_test_01Ovidiu Dumitrescu
 
E d informatica_2020_sp_sn_c_var_test_03
E d informatica_2020_sp_sn_c_var_test_03E d informatica_2020_sp_sn_c_var_test_03
E d informatica_2020_sp_sn_c_var_test_03Ovidiu Dumitrescu
 
6207247 probleme-de-algebra-liniara-dumitru-busneag
6207247 probleme-de-algebra-liniara-dumitru-busneag6207247 probleme-de-algebra-liniara-dumitru-busneag
6207247 probleme-de-algebra-liniara-dumitru-busneagMagda Pop
 
Proiect nr complexe (1)
Proiect nr complexe (1)Proiect nr complexe (1)
Proiect nr complexe (1)Carmen Mrn
 
E d informatica_2020_sp_mi_c_var_test_04
E d informatica_2020_sp_mi_c_var_test_04E d informatica_2020_sp_mi_c_var_test_04
E d informatica_2020_sp_mi_c_var_test_04Ovidiu Dumitrescu
 
E d informatica_2020_sp_sn_c_var_test_04
E d informatica_2020_sp_sn_c_var_test_04E d informatica_2020_sp_sn_c_var_test_04
E d informatica_2020_sp_sn_c_var_test_04Ovidiu Dumitrescu
 
E d informatica_2020_sp_mi_c_var_test_08
E d informatica_2020_sp_mi_c_var_test_08E d informatica_2020_sp_mi_c_var_test_08
E d informatica_2020_sp_mi_c_var_test_08Ovidiu Dumitrescu
 
E d informatica_2020_sp_mi_c_var_test_07
E d informatica_2020_sp_mi_c_var_test_07E d informatica_2020_sp_mi_c_var_test_07
E d informatica_2020_sp_mi_c_var_test_07Ovidiu Dumitrescu
 
Proiect tic a_2b_bria_monica
Proiect tic a_2b_bria_monicaProiect tic a_2b_bria_monica
Proiect tic a_2b_bria_monicabriamonica
 
tap alfa
tap alfatap alfa
tap alfauidivo
 
E d informatica_2020_sp_mi_c_var_test_03
E d informatica_2020_sp_mi_c_var_test_03E d informatica_2020_sp_mi_c_var_test_03
E d informatica_2020_sp_mi_c_var_test_03Ovidiu Dumitrescu
 
E d informatica_2020_sp_mi_c_var_test_02
E d informatica_2020_sp_mi_c_var_test_02E d informatica_2020_sp_mi_c_var_test_02
E d informatica_2020_sp_mi_c_var_test_02Ovidiu Dumitrescu
 
Tehnici de programare triere
Tehnici de programare triereTehnici de programare triere
Tehnici de programare trierecboldisor
 

Similar to Tablouri bidimensionale (20)

Algebra si analiza de 11
Algebra si analiza de 11Algebra si analiza de 11
Algebra si analiza de 11
 
Cap04
Cap04Cap04
Cap04
 
Opt
OptOpt
Opt
 
00007 backtracking
00007 backtracking00007 backtracking
00007 backtracking
 
T 1 grafuri_2017_2018_sem_ii_rezolvat
T 1 grafuri_2017_2018_sem_ii_rezolvatT 1 grafuri_2017_2018_sem_ii_rezolvat
T 1 grafuri_2017_2018_sem_ii_rezolvat
 
E d informatica_2020_sp_mi_c_var_test_01
E d informatica_2020_sp_mi_c_var_test_01E d informatica_2020_sp_mi_c_var_test_01
E d informatica_2020_sp_mi_c_var_test_01
 
E d informatica_2020_sp_sn_c_var_test_03
E d informatica_2020_sp_sn_c_var_test_03E d informatica_2020_sp_sn_c_var_test_03
E d informatica_2020_sp_sn_c_var_test_03
 
6207247 probleme-de-algebra-liniara-dumitru-busneag
6207247 probleme-de-algebra-liniara-dumitru-busneag6207247 probleme-de-algebra-liniara-dumitru-busneag
6207247 probleme-de-algebra-liniara-dumitru-busneag
 
Proiect nr complexe (1)
Proiect nr complexe (1)Proiect nr complexe (1)
Proiect nr complexe (1)
 
E d informatica_2020_sp_mi_c_var_test_04
E d informatica_2020_sp_mi_c_var_test_04E d informatica_2020_sp_mi_c_var_test_04
E d informatica_2020_sp_mi_c_var_test_04
 
E d informatica_2020_sp_sn_c_var_test_04
E d informatica_2020_sp_sn_c_var_test_04E d informatica_2020_sp_sn_c_var_test_04
E d informatica_2020_sp_sn_c_var_test_04
 
E d informatica_2020_sp_mi_c_var_test_08
E d informatica_2020_sp_mi_c_var_test_08E d informatica_2020_sp_mi_c_var_test_08
E d informatica_2020_sp_mi_c_var_test_08
 
E d informatica_2020_sp_mi_c_var_test_07
E d informatica_2020_sp_mi_c_var_test_07E d informatica_2020_sp_mi_c_var_test_07
E d informatica_2020_sp_mi_c_var_test_07
 
Proiect tic a_2b_bria_monica
Proiect tic a_2b_bria_monicaProiect tic a_2b_bria_monica
Proiect tic a_2b_bria_monica
 
tap alfa
tap alfatap alfa
tap alfa
 
Curs5-PC-Cl9
Curs5-PC-Cl9Curs5-PC-Cl9
Curs5-PC-Cl9
 
E d informatica_2020_sp_mi_c_var_test_03
E d informatica_2020_sp_mi_c_var_test_03E d informatica_2020_sp_mi_c_var_test_03
E d informatica_2020_sp_mi_c_var_test_03
 
E d informatica_2020_sp_mi_c_var_test_02
E d informatica_2020_sp_mi_c_var_test_02E d informatica_2020_sp_mi_c_var_test_02
E d informatica_2020_sp_mi_c_var_test_02
 
Matrice
MatriceMatrice
Matrice
 
Tehnici de programare triere
Tehnici de programare triereTehnici de programare triere
Tehnici de programare triere
 

Recently uploaded

ziua pamantului ziua pamantului ziua pamantului
ziua pamantului ziua pamantului ziua pamantuluiziua pamantului ziua pamantului ziua pamantului
ziua pamantului ziua pamantului ziua pamantuluiAndr808555
 
Strategii-pentru-educatia-remedială-ppt.pptx
Strategii-pentru-educatia-remedială-ppt.pptxStrategii-pentru-educatia-remedială-ppt.pptx
Strategii-pentru-educatia-remedială-ppt.pptxMoroianuCristina1
 
Igiena sistemului digestiv , biologi clasa 11-a
Igiena sistemului digestiv , biologi clasa 11-aIgiena sistemului digestiv , biologi clasa 11-a
Igiena sistemului digestiv , biologi clasa 11-aCMB
 
Literatura polonă pentru copii tradusă în limba română
Literatura polonă pentru copii tradusă în limba românăLiteratura polonă pentru copii tradusă în limba română
Literatura polonă pentru copii tradusă în limba românăBibliotecaMickiewicz
 
Sistemul excretor la om, biologie clasa 11
Sistemul excretor la om, biologie clasa 11Sistemul excretor la om, biologie clasa 11
Sistemul excretor la om, biologie clasa 11CMB
 
Catalogul firmei de exercițiu Ancolex 2024.pptx
Catalogul firmei de exercițiu Ancolex 2024.pptxCatalogul firmei de exercițiu Ancolex 2024.pptx
Catalogul firmei de exercițiu Ancolex 2024.pptxCori Rus
 
Agricultura- lectie predare -invatare geografie cls 10
Agricultura- lectie predare -invatare geografie cls 10Agricultura- lectie predare -invatare geografie cls 10
Agricultura- lectie predare -invatare geografie cls 10CrciunAndreeaMaria
 

Recently uploaded (7)

ziua pamantului ziua pamantului ziua pamantului
ziua pamantului ziua pamantului ziua pamantuluiziua pamantului ziua pamantului ziua pamantului
ziua pamantului ziua pamantului ziua pamantului
 
Strategii-pentru-educatia-remedială-ppt.pptx
Strategii-pentru-educatia-remedială-ppt.pptxStrategii-pentru-educatia-remedială-ppt.pptx
Strategii-pentru-educatia-remedială-ppt.pptx
 
Igiena sistemului digestiv , biologi clasa 11-a
Igiena sistemului digestiv , biologi clasa 11-aIgiena sistemului digestiv , biologi clasa 11-a
Igiena sistemului digestiv , biologi clasa 11-a
 
Literatura polonă pentru copii tradusă în limba română
Literatura polonă pentru copii tradusă în limba românăLiteratura polonă pentru copii tradusă în limba română
Literatura polonă pentru copii tradusă în limba română
 
Sistemul excretor la om, biologie clasa 11
Sistemul excretor la om, biologie clasa 11Sistemul excretor la om, biologie clasa 11
Sistemul excretor la om, biologie clasa 11
 
Catalogul firmei de exercițiu Ancolex 2024.pptx
Catalogul firmei de exercițiu Ancolex 2024.pptxCatalogul firmei de exercițiu Ancolex 2024.pptx
Catalogul firmei de exercițiu Ancolex 2024.pptx
 
Agricultura- lectie predare -invatare geografie cls 10
Agricultura- lectie predare -invatare geografie cls 10Agricultura- lectie predare -invatare geografie cls 10
Agricultura- lectie predare -invatare geografie cls 10
 

Tablouri bidimensionale

  • 1. Proiect la informatica TABLOURI BIDIMENSIONALE CLASA A X-A A
  • 2. I mplementarea tablourilor bidimensionale *Tabloul are un numar bine *Un tablou bidimensional determinat de elemente si este o succesiune de locatii de memorie se identifica printr-un recunoscute prin acelasi singur nume. identificator si prin *Valorile atribuite pozitia fiecareia in cadrul elementelor tabloului sirului. trebuie sa fie de acelasi tip. *Pozitia este data printr-o *Tablourile bidimensionale se suita de numere numesc MATRICE. pozitive(indecsi), care reprezinta cele doua dimensiuni (linie si coloana).
  • 3. M atrice * 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 spatiu continuu de memorie. Numele matricei e un pointer catre adresa primului element.Elementele matricei sunt stocate in memorie linie dupa linie.
  • 4. Matricea cu m linii si n coloane arata astfel:
  • 5. C itirea 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 câte linii şi câte coloane va trebui să aibă tabloul. În acest caz , tabloul se declară cu un număr maxim de linii şi un număr maxim de coloane, în aşa fel încât acesta să corespundă oricărui set de date de intrare. Evident , într-un astfel de caz există o risipă de memorie internă.
  • 6. I ntroducerea si afisarea valorilor *Programul alaturat citeste si #include<iostream.h> afiseaza o matrice. Initial main() se citesc numarul de linii si { int m,n,i,j,a[10][10]; coloane ale tabloului (m si cout<<"m="; cin>>m; n). cout<<"n="; cin>>n; for (i=1; i<=m;i++) for (j=1; j<=n; j++) { cout<<"a["<<i<<','<<j<<"]="; *In memorie, tablourile sunt cin>>a[i][j];} memorate pe linii (prima for (i=1;i<=m;i++) linie, a doua s.a.m.d). { for (j=1;j<=n;j++) cout<<a[i][j]<<' '; cout<<endl; } }
  • 7. * 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; X [0 ] [1 ] [2 ] [3 ] [4 ] [5 ] [6 ] [7 ] [0 ] 23 67 [1 ] [2 ] [3 ] [4 ] [5 ]
  • 8. P relucrari asupra matricelor Exemplu : Pentru o matrice data - Se parcurge matricea element cu sa se calculeze suma element. Se testeaza daca elementelor care apartin unui elementul curent se incadreaza in interval dat (xinf<=tab[i][j] && intervalul dorit si în caz afirmativ xsup>=tab[i][j]). elementul curent se aduna la Prezentarea algoritmului : suma calculata anterior - se citesc capetele intervalului in pentru i=0,m-1 executa care trebuie sa se incadreze pentru j=0,n-1 executa elementele cautate in matrice daca tab[i][j] > xi si tab[i][j] xinf şi xsup < xf atunci - se citesc dimensiunile matricei suma = suma + tab[i][j]; m si n sfarsit daca - se citesc elementele matricei sfarsit pentru pentru i=0,m-1 executa sfarsit pentru pentru j=0,n-1 executa - afiseaza suma. citeste tab[i][j]; Observatie : Variabila suma sfarsit pentru reprezinta suma calculata. sfarsit pentru
  • 9. I nterschimbarea de linii *Se citeste un tablou cu m linii si n coloane. *Se citesc,de asemenea,2 numere naturale,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 interschimbarea liniilor x si y.
  • 10. P rogramul C / ++pentru interschimbarea a C doua linii #include<iostream.h> for(i=1;i<=m;i++) main() {for(j=1;j<=n;j++) { cout<<a[i][j]<<``; int m,n,i,j,aux,a[10][10]; cout<<endl;} cout<<``m=``;cin>>m; { cout<<``n=``;cin>>n; aux=a[x][j]; for(i=1;i<=m;i++) a[x][j]=a[y][j] for(j=1;j<=n;j++) a[y][j]=aux;} { cout<<endl; cout<<``a[``<<i<<`,`<<j<<``]=``; for(i=1;i<=m;i++) cin>>a[i][j]; {for(j=1;j<=n;j++) } cout<<a[i][j]<<``; cout<<``x=``;cin>>x; cout<<endl; cout<<``y=``;cin>>y; }} cout<<endl;
  • 11. M atricea 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]
  • 12. *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). A11 A12 A13 A14 A21 A22 A23 A24 A31 A32 A33 A34 A41 A42 A43 A44
  • 13. M atrice 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 corespondentele de sub si de peste diagonala principala sunt egale (adica m[i][j] = m[j][i] pentru oricare i si j). 1 2 3 4 2 5 6 7 3 4 8 9 7 8 9 10 Matricea va fi liniarizata sub forma: 1 2 3 4| 5 6 7| 8 9 10
  • 14. *Calculul pozitiei elementului i,j dintr-o matrice de dimensiune 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 j<=i. Daca j>i,atunci se interschimba i cu j.
  • 15. B I B L I OGR A F I E * Tudor Sorin – Informatică, Varianta C++, Manual pentru clasa a XI-a, Editura L&S Infomat, Bucuresti, 2006. *LaboratorProgramarea calculatoarelor-Prf.A.Runceanu.