|

Afișarea Elementelor unei Matrice în Funcție de Diagonala Secundară 31


1. Obiectivele lecției:

  • Să înțeleagă conceptul de diagonală secundară a unei matrice.
  • Să implementeze algoritmi pentru afișarea elementelor aflate pe, sub sau deasupra diagonalei secundare.
  • Să aplice acest concept în probleme practice.

2. Conținutul lecției:


Ce este diagonala secundară a unei matrice?

  • Definiție: Diagonala secundară a unei matrice pătratice este formată din elementele situate pe linia iii și coloana n−i−1n – i – 1n−i−1, unde iii variază de la 0 la n−1n-1n−1 (dimensiunea matricei).
  • Exemplu: Matricea AAA de dimensiune 4×44 \times 44×4: A=[12345678910111213141516]A = \begin{bmatrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 \\ 13 & 14 & 15 & 16 \end{bmatrix}A=​15913​261014​371115​481216​​
    • Diagonala secundară: 4,7,10,134, 7, 10, 134,7,10,13
    • Deasupra diagonalei secundare: 1,2,3,61, 2, 3, 61,2,3,6
    • Sub diagonala secundară: 8,11,12,14,15,168, 11, 12, 14, 15, 168,11,12,14,15,16

Algoritmul pentru identificarea poziției elementelor

  1. Pe diagonala secundară:
    • Elementele se află pe pozițiile j=n−i−1j = n – i – 1j=n−i−1.
  2. Deasupra diagonalei secundare:
    • Elementele se află pe pozițiile j<n−i−1j < n – i – 1j<n−i−1.
  3. Sub diagonala secundară:
    • Elementele se află pe pozițiile j>n−i−1j > n – i – 1j>n−i−1.

3. Cod în C++


Exemplu 1: Afișarea elementelor pe diagonala secundară

#include <iostream>

using namespace std;

void afisareDiagonalaSecundara(int mat[][4], int dim) {

    cout << „Elementele de pe diagonala secundara sunt: „;

    for (int i = 0; i < dim; i++) {

        cout << mat[i][dim – i – 1] << ” „;

    }

    cout << endl;

}

int main() {

    int mat[4][4] = {

        {1, 2, 3, 4},

        {5, 6, 7, 8},

        {9, 10, 11, 12},

        {13, 14, 15, 16}

    };

    afisareDiagonalaSecundara(mat, 4);

    return 0;

}


Exemplu 2: Afișarea elementelor deasupra și sub diagonala secundară

#include <iostream>

using namespace std;

void afisareDeasupraDiagonaleiSecundare(int mat[][4], int dim) {

    cout << „Elementele de deasupra diagonalei secundare sunt: „;

    for (int i = 0; i < dim; i++) {

        for (int j = 0; j < dim – i – 1; j++) {

            cout << mat[i][j] << ” „;

        }

    }

    cout << endl;

}

void afisareSubDiagonalaSecundara(int mat[][4], int dim) {

    cout << „Elementele de sub diagonala secundara sunt: „;

    for (int i = 0; i < dim; i++) {

        for (int j = dim – i; j < dim; j++) {

            cout << mat[i][j] << ” „;

        }

    }

    cout << endl;

}

int main() {

    int mat[4][4] = {

        {1, 2, 3, 4},

        {5, 6, 7, 8},

        {9, 10, 11, 12},

        {13, 14, 15, 16}

    };

    afisareDeasupraDiagonaleiSecundare(mat, 4);

    afisareSubDiagonalaSecundara(mat, 4);

    return 0;

}


4. Complexitatea algoritmului

  1. Afișarea elementelor pe diagonala secundară:
    • Complexitate temporală: O(n)O(n)O(n), unde nnn este dimensiunea matricei.
    • Complexitate spațială: O(1)O(1)O(1), deoarece nu necesită spațiu suplimentar.
  2. Afișarea elementelor deasupra/sub diagonalei secundare:
    • Complexitate temporală: O(n2)O(n^2)O(n2), deoarece sunt procesate toate elementele relevante.
    • Complexitate spațială: O(1)O(1)O(1).

5. Activități practice pentru elevi

  1. Realizați un program care calculează suma elementelor de pe diagonala secundară.
  2. Scrieți un program care înlocuiește toate elementele de deasupra diagonalei secundare cu 0.
  3. Realizați un program care afișează diferența dintre suma elementelor de pe diagonala principală și suma celor de pe diagonala secundară.

6. Scheme logice

  1. Elemente pe diagonala secundară:
    • Start -> Iterează prin matrice -> Selectează mat[i][dim−i−1]mat[i][dim – i – 1]mat[i][dim−i−1] -> Afișează -> Stop.
  2. Elemente deasupra/sub diagonalei secundare:
    • Start -> Iterează prin matrice -> Verifică condiția j<dim−i−1j < dim – i – 1j<dim−i−1 sau j>dim−i−1j > dim – i – 1j>dim−i−1 -> Afișează -> Stop.

7. Concluzie:

  • Diagonala secundară este un concept important în manipularea matricelor, utilizat frecvent în probleme de procesare a datelor și algoritmică.
  • Înțelegerea pozițiilor relative față de diagonala secundară ajută la manipularea eficientă a matricelor în aplicații practice.

Similar Posts

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *