|

Ștergerea unei linii și a unei coloane dintr-o matrice în C++ 28


1. Obiectivele lecției:

  • Să înțeleagă cum să elimine o linie și o coloană dintr-o matrice.
  • Să implementeze un algoritm pentru ștergerea unei linii și a unei coloane.
  • Să aplice acest concept pentru probleme practice.

2. Conținutul lecției:


Conceptul de ștergere a unei linii și a unei coloane

  • Ștergerea unei linii: Eliminați toate elementele unei linii din matrice, deplasând liniile de sub aceasta în sus.
  • Ștergerea unei coloane: Eliminați toate elementele unei coloane, deplasând coloanele din dreapta acesteia spre stânga.

Pașii algoritmului:

Pentru ștergerea unei linii:

  1. Identificați indexul liniei care trebuie eliminată.
  2. Deplasați toate liniile de sub linia specificată cu o poziție în sus.
  3. Reduceți numărul de rânduri al matricei.

Pentru ștergerea unei coloane:

  1. Identificați indexul coloanei care trebuie eliminată.
  2. Deplasați toate elementele din coloanele din dreapta acesteia cu o poziție spre stânga.
  3. Reduceți numărul de coloane al matricei.

Pseudocod:

Ștergere linie:

Pentru i de la linie la nr_rânduri – 2:

    Pentru j de la 0 la nr_coloane – 1:

        matrice[i][j] = matrice[i + 1][j]

nr_rânduri–

Ștergere coloană:

Pentru i de la 0 la nr_rânduri – 1:

    Pentru j de la coloană la nr_coloane – 2:

        matrice[i][j] = matrice[i][j + 1]

nr_coloane–


3. Cod în C++


Exemplu: Ștergerea unei linii și a unei coloane

#include <iostream>

using namespace std;

void afisareMatrice(int mat[][10], int rânduri, int coloane) {

    for (int i = 0; i < rânduri; i++) {

        for (int j = 0; j < coloane; j++) {

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

        }

        cout << endl;

    }

}

void stergereLinie(int mat[][10], int& rânduri, int coloane, int linie) {

    for (int i = linie; i < rânduri – 1; i++) {

        for (int j = 0; j < coloane; j++) {

            mat[i][j] = mat[i + 1][j];

        }

    }

    rânduri–; // Reducem numărul de rânduri

}

void stergereColoana(int mat[][10], int rânduri, int &coloane, int coloana) {

    for (int i = 0; i < rânduri; i++) {

        for (int j = coloana; j < coloane – 1; j++) {

            mat[i][j] = mat[i][j + 1];

        }

    }

    coloane–; // Reducem numărul de coloane

}

int main() {

    int mat[10][10] = {

        {1, 2, 3, 4},

        {5, 6, 7, 8},

        {9, 10, 11, 12},

        {13, 14, 15, 16}

    };

    int rânduri = 4, coloane = 4;

    cout << „Matrice initiala:” << endl;

    afisareMatrice(mat, rânduri, coloane);

    int linieDeSters, coloanaDeSters;

    cout << „Introduceti linia de sters (0-index): „;

    cin >> linieDeSters;

    stergereLinie(mat, rânduri, coloane, linieDeSters);

    cout << „Matrice dupa stergerea liniei ” << linieDeSters << „:” << endl;

    afisareMatrice(mat, rânduri, coloane);

    cout << „Introduceti coloana de sters (0-index): „;

    cin >> coloanaDeSters;

    stergereColoana(mat, rânduri, coloane, coloanaDeSters);

    cout << „Matrice dupa stergerea coloanei ” << coloanaDeSters << „:” << endl;

    afisareMatrice(mat, rânduri, coloane);

    return 0;

}


4. Complexitatea algoritmului

  1. Ștergerea unei linii:
    • Complexitate temporală: O(n⋅m), unde n este numărul de rânduri și mmm numărul de coloane.
    • Complexitate spațială: O(1), deoarece nu necesită memorie suplimentară.
  2. Ștergerea unei coloane:
    • Complexitate temporală: O(n⋅m), deoarece fiecare coloană implică modificarea tuturor rândurilor.
    • Complexitate spațială: O(1).

5. Activități practice pentru elevi

  1. Implementați un program care șterge simultan mai multe linii și coloane specificate de utilizator.
  2. Scrieți un program care șterge linia și coloana ce conține valoarea maximă din matrice.
  3. Realizați un program care transformă matricea într-o matrice pătratică, ștergând rânduri și coloane.

6. Scheme logice

  1. Ștergere linie:
    • Start -> Iterează prin rânduri -> Deplasează rândurile inferioare în sus -> Actualizează dimensiunea -> Stop.
  2. Ștergere coloană:
    • Start -> Iterează prin coloane -> Deplasează coloanele din dreapta spre stânga -> Actualizează dimensiunea -> Stop.

7. Concluzie:

  • Ștergerea unei linii și a unei coloane dintr-o matrice implică manipularea elementelor rămase pentru a păstra structura matricei.
  • Înțelegerea acestui proces este utilă în rezolvarea problemelor care implică procesarea matricelor în aplicații complexe.

Similar Posts

Lasă un răspuns

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