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

141082915 motivarea-pentru-cariera-did-panisoara-1
141082915 motivarea-pentru-cariera-did-panisoara-1141082915 motivarea-pentru-cariera-did-panisoara-1
141082915 motivarea-pentru-cariera-did-panisoara-1cindeaadela
 
Rolul parintilor in dezvoltarea armonioasa a copilului
Rolul parintilor in dezvoltarea armonioasa a copiluluiRolul parintilor in dezvoltarea armonioasa a copilului
Rolul parintilor in dezvoltarea armonioasa a copiluluiLumi Codrescu
 
Curiozitati matematice
Curiozitati matematiceCuriozitati matematice
Curiozitati matematicemkovacsbarac
 
Studierea limbajului pascal
Studierea limbajului pascalStudierea limbajului pascal
Studierea limbajului pascalnatashcka
 
Fisa psihopedagogica
Fisa psihopedagogicaFisa psihopedagogica
Fisa psihopedagogicateo1971
 
Comunicarea cu parintii
Comunicarea cu parintiiComunicarea cu parintii
Comunicarea cu parintiiIna Dumbrava
 
Romania in al doilea razboi mondial
Romania in al doilea razboi mondialRomania in al doilea razboi mondial
Romania in al doilea razboi mondialChircu Elena
 
кудрявцева принц и нищий
кудрявцева  принц и нищийкудрявцева  принц и нищий
кудрявцева принц и нищийOlga Antropova
 
Tolerante si control dimensional laborator - pater
Tolerante si control dimensional   laborator - paterTolerante si control dimensional   laborator - pater
Tolerante si control dimensional laborator - paterClimenteAlin
 
160-de-activităţi-dinamice-jocuri-pentru-team-building
 160-de-activităţi-dinamice-jocuri-pentru-team-building 160-de-activităţi-dinamice-jocuri-pentru-team-building
160-de-activităţi-dinamice-jocuri-pentru-team-buildingAntonella Stancu
 
Prezentare Gremalschi Anatol.pptx
Prezentare Gremalschi Anatol.pptxPrezentare Gremalschi Anatol.pptx
Prezentare Gremalschi Anatol.pptxNadyaRacila
 

What's hot (20)

Functiii
FunctiiiFunctiii
Functiii
 
141082915 motivarea-pentru-cariera-did-panisoara-1
141082915 motivarea-pentru-cariera-did-panisoara-1141082915 motivarea-pentru-cariera-did-panisoara-1
141082915 motivarea-pentru-cariera-did-panisoara-1
 
Rolul parintilor in dezvoltarea armonioasa a copilului
Rolul parintilor in dezvoltarea armonioasa a copiluluiRolul parintilor in dezvoltarea armonioasa a copilului
Rolul parintilor in dezvoltarea armonioasa a copilului
 
Curiozitati matematice
Curiozitati matematiceCuriozitati matematice
Curiozitati matematice
 
Trucuri matematice
Trucuri matematiceTrucuri matematice
Trucuri matematice
 
Ppt matematica
Ppt matematicaPpt matematica
Ppt matematica
 
Studierea limbajului pascal
Studierea limbajului pascalStudierea limbajului pascal
Studierea limbajului pascal
 
Fisa psihopedagogica
Fisa psihopedagogicaFisa psihopedagogica
Fisa psihopedagogica
 
Comunicarea cu parintii
Comunicarea cu parintiiComunicarea cu parintii
Comunicarea cu parintii
 
Romania in al doilea razboi mondial
Romania in al doilea razboi mondialRomania in al doilea razboi mondial
Romania in al doilea razboi mondial
 
Carbonul
CarbonulCarbonul
Carbonul
 
кудрявцева принц и нищий
кудрявцева  принц и нищийкудрявцева  принц и нищий
кудрявцева принц и нищий
 
Tolerante si control dimensional laborator - pater
Tolerante si control dimensional   laborator - paterTolerante si control dimensional   laborator - pater
Tolerante si control dimensional laborator - pater
 
Invitatie la toleranta
Invitatie la tolerantaInvitatie la toleranta
Invitatie la toleranta
 
Proteine Ppt
Proteine PptProteine Ppt
Proteine Ppt
 
Formule calcul prescurtat VII-VIII
Formule calcul prescurtat VII-VIIIFormule calcul prescurtat VII-VIII
Formule calcul prescurtat VII-VIII
 
160-de-activităţi-dinamice-jocuri-pentru-team-building
 160-de-activităţi-dinamice-jocuri-pentru-team-building 160-de-activităţi-dinamice-jocuri-pentru-team-building
160-de-activităţi-dinamice-jocuri-pentru-team-building
 
Povesti terapeutice
Povesti terapeuticePovesti terapeutice
Povesti terapeutice
 
Probabilitati
ProbabilitatiProbabilitati
Probabilitati
 
Prezentare Gremalschi Anatol.pptx
Prezentare Gremalschi Anatol.pptxPrezentare Gremalschi Anatol.pptx
Prezentare Gremalschi Anatol.pptx
 

Viewers also liked

Proiect cl ix
Proiect cl ixProiect cl ix
Proiect cl ixClaudia
 
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 (11)

Tipul tablou
Tipul tablouTipul tablou
Tipul tablou
 
Proiect cl ix
Proiect cl ixProiect cl ix
Proiect cl ix
 
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
 
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

Tipuri de date tablou
Tipuri de date tablouTipuri de date tablou
Tipuri de date tablouStelianBaciu2
 
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
 

Similar to Tablouri bidimensionale (20)

Tipuri de date tablou
Tipuri de date tablouTipuri de date tablou
Tipuri de date tablou
 
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
 

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.