7.3. Tablouri bidimensionale (matrici)

download 7.3. Tablouri bidimensionale (matrici)

of 60

  • date post

    03-Jan-2017
  • Category

    Documents

  • view

    233
  • download

    5

Embed Size (px)

Transcript of 7.3. Tablouri bidimensionale (matrici)

  • Programarea calculatoarelor

    Universitatea Constantin Brncui din Trgu-Jiu Facultatea de Inginerie

    Departamentul de Automatic, Energie i Mediu

    Lect. dr. Adrian Runceanu

  • Curs 8

    01.11.2013 Programarea calculatoarelor 2

  • Capitolul 7. Tablouri

    7.1. Generaliti. Clasificare 7.2. Tablouri unidimensionale (vectori) 7.3. Tablouri bidimensionale (matrici) 7.4. Tablouri multidimensionale

    01.11.2013 Programarea calculatoarelor 3

  • 7.1. Generalitati. Clasificare

    Numim tablou o colecie de date de acelai tip, n care elementele sunt ordonate, iar accesul la fiecare element are loc prin indice.

    n funcie de numrul indicilor avem mai multe tipuri de tablouri:

    1. Tablouri unidimensionale (cu un singur indice) 2. Tablouri bidimensionale (cu doi indici) 3. Tablouri multidimensionale (cu mai muli

    indici)

    01.11.2013 Programarea calculatoarelor 4

  • Capitolul 7. Tablouri

    7.1. Generaliti. Clasificare 7.2. Tablouri unidimensionale (vectori) 7.3. Tablouri bidimensionale (matrici) 7.4. Tablouri multidimensionale

    01.11.2013 Programarea calculatoarelor 5

  • 7.2. Tablouri unidimensionale (vectori)

    Tablourile unidimensionale funcioneaz ca un vector i se pot declara astfel:

    Se observ c este obligatorie folosirea parantezelor drepte care s ncadreze dimensiunea maxim pe care o alege utilizatorul pentru acel tablou unidimensional.

    01.11.2013 Programarea calculatoarelor 6

    tip nume_tablou[dimensiune_maxim];

  • 7.2. Tablouri unidimensionale (vectori)

    Exemplu: Declarri de tablouri unidimensionale:

    01.11.2013 Programarea calculatoarelor 7

    int a[25]; // declararea unui tablou unidimensional cu maxim 25 de // elemente, fiecare de tip ntreg

    float x[30]; // declararea unui tablou unidimensional cu maxim 30 de // elemente, fiecare de tip real simpl precizie

    char s[40]; // declararea unui tablou unidimensional cu maxim 40 de // elemente, fiecare de tip caracter

  • 7.2. Tablouri unidimensionale (vectori)

    Compilatorul C++ aloc un spaiu de memorie egal cu numrul maxim de elemente ale tabloului, rezervnd bineneles octei n funcie de tipul de baz al fiecrui tablou.

    Accesul la fiecare element al tabloului se face prin numele acestuia urmat ntre paranteze, de indicele su (adic poziia pe care o ocup n tablou).

    n limbajul C++, indicii tablourilor ncep numrtoarea de la valoarea 0.

    01.11.2013 Programarea calculatoarelor 8

  • 7.2. Tablouri unidimensionale (vectori)

    Exemplu: Modaliti de acces la elementele ce pot fi

    memorate n tablourile unidimensionale declarate anterior:

    01.11.2013 Programarea calculatoarelor 9

    a[0] reprezint elementul aflat pe prima poziie n tablou a[24] - reprezint elementul aflat pe ultima poziie n tablou x[i] - reprezint elementul aflat pe poziia i n tablou, unde i poate avea valori ntre 0 i 29.

  • 7.2. Tablouri unidimensionale (vectori)

    Iniializarea elementelor unui tablou se poate face total sau parial la declararea lor:

    int b[5] = {1, 2, 3, 4, 5}; Astfel: elementul b[0] are valoarea 1 elementul b[1] are valoarea 2 elementul b[2] are valoarea 3 elementul b[3] are valoarea 4 elementul b[4] are valoarea 5

    01.11.2013 Programarea calculatoarelor 10

  • 7.2. Tablouri unidimensionale (vectori)

    Problema 1: Se consider n numere reale. Se cere s se

    determine valoarea minim i valoarea maxim. Exemplu:

    01.11.2013 Programarea calculatoarelor 11

    Date de intrare: n=5 si x={10, -2, 34, -198, 4} Date de ieire: minim=-198, maxim=34

  • 7.2. Tablouri unidimensionale (vectori)

    01.11.2013 Programarea calculatoarelor 12

    #include

    int main(void)

    {

    int i, n;

    float x[50], min, max;

    coutn;

    for( i = 1; i

  • 7.2. Tablouri unidimensionale (vectori)

    min = x[1]; max = x[1]; for( i=2; i x[i] ) min = x[i]; else if( max < x[i] ) max = x[i]; cout

  • 7.2. Tablouri unidimensionale (vectori)

    Executia programului pe o serie de date de test:

    01.11.2013 Programarea calculatoarelor 14

  • 7.2. Tablouri unidimensionale (vectori)

    Problema 2: Se consider n numere ntregi. Se cere s se verifice dac ele sunt sau nu n

    ordine cresctoare, afind cte un mesaj corespunztor.

    Exemplu:

    01.11.2013 Programarea calculatoarelor 15

    Date de intrare: n=5 si x={1, 2, 17, 25, 43} Date de ieire: Elemente vectorului sunt in ordine crescatoare

  • 7.2. Tablouri unidimensionale (vectori) #include int main(void) { int i, n, verif=1; int x[50]; coutn; for(i=1; i
  • 7.2. Tablouri unidimensionale (vectori)

    for(i=1; i x[i+1] ) verif=0; if( verif == 1 ) cout

  • 7.2. Tablouri unidimensionale (vectori)

    Executia programului pe doua serii de date de test:

    01.11.2013 Programarea calculatoarelor 18

  • Capitolul 7. Tablouri

    7.1. Generaliti. Clasificare 7.2. Tablouri unidimensionale (vectori) 7.3. Tablouri bidimensionale (matrici) 7.4. Tablouri multidimensionale

    01.11.2013 Programarea calculatoarelor 19

  • 7.3. Tablouri bidimensionale (matrici)

    Tablourile bidimensionale funcioneaz ca o matrice i se pot declara astfel:

    La fel ca i n cazul tablourilor unidimensionale, i n cazul tablourilor bidimensionale, la declarare, se trece dimensiunea maxim a liniilor (dim_linie) i dimensiunea maxim a coloanelor (dim_coloana).

    01.11.2013 Programarea calculatoarelor 20

    tip nume_tablou[dim_linie][dim_coloana];

  • 7.3. Tablouri bidimensionale (matrici)

    Exemplu: Declarri de tablouri bidimensionale:

    01.11.2013 Programarea calculatoarelor 21

    int a[10][10]; // declararea unui tablou bidimensional cu maxim 100 de // elemente (10*10), fiecare de tip ntreg

    float x[5][5]; // declararea unui tablou bidimensional cu maxim 25 de // elemente(5*5), fiecare de tip real simpl precizie

    char s[20][10]; // declararea unui tablou bidimensional cu maxim 200 de

    // elemente(20*10), fiecare de tip caracter

  • 7.3. Tablouri bidimensionale (matrici)

    Compilatorul C++ aloc un spaiu de memorie egal cu numrul de linii nmulit cu numrul de coloane ale tabloului, rezervnd bineneles octei n funcie de tipul de baz al fiecrui tablou.

    Accesul la fiecare element al tabloului se face prin numele acestuia urmat ntre paranteze, de indicele liniei i indicele coloanei (adic poziia pe care o ocup n tablou).

    01.11.2013 Programarea calculatoarelor 22

  • 7.3. Tablouri bidimensionale (matrici)

    Exemplu: Modaliti de acces la elementele ce pot fi

    memorate n tablourile bidimensionale declarate anterior:

    01.11.2013 Programarea calculatoarelor 23

    a[0][0] reprezint elementul aflat pe linia 0 coloana 0 a[9][9] - reprezint elementul aflat pe linia 9 coloana 9 x[i][j] - reprezint elementul aflat pe linia i, coloana j n matrice, unde i i j pot avea valori ntre 0 i 4.

  • 7.3. Tablouri bidimensionale (matrici)

    Iniializarea elementelor unui tablou se poate face total sau parial la declararea lor:

    int b[2][3]={ {1, 2, 3}, {4, 5, 6} }; Astfel: elementul b[0][0] are valoarea 1 elementul b[0][1] are valoarea 2 elementul b[0][2] are valoarea 3 elementul b[1][0] are valoarea 4 elementul b[1][1] are valoarea 5 elementul b[1][2] are valoarea 6

    01.11.2013 Programarea calculatoarelor 24

  • 7.3. Tablouri bidimensionale (matrici)

    Problema 1: Se consider o matrice A cu nm numere

    ntregi. Se cere s se obin transpusa sa. Exemplu:

    01.11.2013 Programarea calculatoarelor 25

    Date de intrare: n=3, m=4 si matricea A: 1 2 3 4 5 6 7 8 9 10 11 12

    Date de ieire: Matricea transpusa B: n=4 si m=3 1 5 9 2 6 10 3 7 11 4 8 12

  • 7.3. Tablouri bidimensionale (matrici) #include int main(void) { int a[10][10], b[10][10]; int n, m, i, j; cout
  • 7.3. Tablouri bidimensionale (matrici)

    cout

  • 7.3. Tablouri bidimensionale (matrici)

    for(i=1; i

  • 7.3. Tablouri bidimensionale (matrici)

    Executia programului pe o serie de date de test:

    01.11.2013 Programarea calculatoarelor 29

  • 7.3. Tablouri bidimensionale (matrici)

    Problema 2: Se consider dou tablouri

    bidimensionale (matrici) A i B cu nm numere ntregi.

    Se cere s se calculeze matricea suma: C = A + B.

    01.11.2013 Programarea calculatoarelor 30

  • #include

    int main(void)

    {

    int Matrice1 [10][10], Matrice2 [10][10],Matricesuma[10][10]; int i, j, n, m; cout

  • cout
  • for(i=1; i
  • for(i=1; i
  • 7.3. Tablouri bidimensionale (matrici)

    Executia programului pe o serie de date de test:

    01.11.2013 Programarea calculatoarelor 35

  • 7.3. Tablouri bidimensionale (matrici)

    Problema 3: Se consider dou tablouri

    bidimensionale (matrici) A i B cu nm, respectiv mp numere ntregi.

    Se cere s se calculeze matricea produs: C = A * B.

    01.11.2013 Programarea calculatoarelor 36

  • 7.3. Tablouri bidimensionale (matrici)

    Exemplu:

    01.11.2013 Programarea calculatoarelor 37

    Date de intrare: n=2, m=3 si matricea a: 1 2 3 4 5 6 m=3, p=4 si matricea b: 1 2 3 4 5 6 7 8 9 10 11 12

    Date de iesire: n=2 si p=3 si matricea produs c: 38 44 50 56 83 98 113 128

  • 7.3. Tablouri bidimensionale (matrici) #include int main(void) { int a[10][1