|

Problema Ștergerii unui Element din Vector în C++ 24


1. Obiectivele lecției:

  • Să înțeleagă principiul ștergerii unui element dintr-un vector.
  • Să implementeze algoritmi pentru ștergerea unui element specificat.
  • Să rezolve probleme practice care implică modificarea unui vector.

2. Conținutul lecției:


Ce înseamnă ștergerea unui element dintr-un vector?

  • Definiție: Ștergerea unui element implică eliminarea acestuia din vector, mutând restul elementelor spre stânga pentru a umple spațiul rămas.
  • Condiție: După ștergere, dimensiunea logică a vectorului trebuie actualizată.

Ștergerea unui element într-un vector


1. Principiu:

  1. Identificați indexul elementului care trebuie șters.
  2. Deplasați toate elementele aflate după acest index cu o poziție spre stânga.
  3. Actualizați dimensiunea logică a vectorului.

2. Pași pentru ștergere:

  1. Căutați poziția: Găsiți poziția elementului care trebuie șters.
  2. Deplasați elementele: Mutați elementele rămase spre stânga.
  3. Actualizați dimensiunea: Reduceți dimensiunea logică a vectorului cu 1.

Pseudocod:

Intrare: vector, dimensiune, pozitie

Dacă pozitie < 0 sau pozitie >= dimensiune:

    Afișează eroare

Altfel:

    Pentru i = pozitie la dimensiune – 2:

        vector[i] = vector[i + 1]

    dimensiune–


3. Cod în C++


Exemplu 1: Ștergerea unui element dintr-un vector fix

#include <iostream>

using namespace std;

void stergereElement(int arr[], int& dim, int pozitie) {

    if (pozitie < 0 || pozitie >= dim) {

        cout << „Pozitie invalida!” << endl;

        return;

    }

    // Deplasăm elementele spre stânga

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

        arr[i] = arr[i + 1];

    }

    // Actualizăm dimensiunea

    dim–;

}

void afisareVector(int arr[], int dim) {

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

        cout << arr[i] << ” „;

    }

    cout << endl;

}

int main() {

    int arr[10] = {1, 2, 3, 4, 5};

    int dim = 5;

    cout << „Vector initial: „;

    afisareVector(arr, dim);

    int pozitie;

    cout << „Introduceti pozitia elementului de sters: „;

    cin >> pozitie;

    stergereElement(arr, dim, pozitie);

    cout << „Vector dupa stergere: „;

    afisareVector(arr, dim);

    return 0;

}


Exemplu 2: Ștergerea unui element dintr-un vector dinamic (std::vector)

#include <iostream>

#include <vector>

using namespace std;

void stergereElement(vector<int>& arr, int pozitie) {

    if (pozitie < 0 || pozitie >= arr.size()) {

        cout << „Pozitie invalida!” << endl;

        return;

    }

    // Folosim metoda erase

    arr.erase(arr.begin() + pozitie);

}

void afisareVector(const vector<int>& arr) {

    for (int val : arr) {

        cout << val << ” „;

    }

    cout << endl;

}

int main() {

    vector<int> arr = {1, 2, 3, 4, 5};

    cout << „Vector initial: „;

    afisareVector(arr);

    int pozitie;

    cout << „Introduceti pozitia elementului de sters: „;

    cin >> pozitie;

    stergereElement(arr, pozitie);

    cout << „Vector dupa stergere: „;

    afisareVector(arr);

    return 0;

}


4. Complexitatea algoritmului

  1. Ștergerea dintr-un vector fix (array):
    • Complexitate temporală: O(n), deoarece elementele rămase trebuie deplasate.
    • Complexitate spațială: O(1), deoarece nu este nevoie de memorie suplimentară.
  2. Ștergerea dintr-un vector dinamic (std::vector):
    • Complexitate temporală: O(n), deoarece std::vector folosește o metodă similară de deplasare.
    • Complexitate spațială: Depinde de gestionarea memoriei în std::vector.

5. Activități practice pentru elevi

  1. Scrieți un program care șterge toate aparițiile unei valori specificate dintr-un vector.
  2. Realizați un program care elimină elementele duplicate dintr-un vector.
  3. Implementați o funcție care șterge ultimul element al unui vector și actualizează dimensiunea acestuia.

6. Scheme logice

  1. Ștergerea dintr-un vector fix:
    • Start -> Verifică poziția -> Deplasează elementele spre stânga -> Actualizează dimensiunea -> Stop.
  2. Ștergerea dintr-un std::vector:
    • Start -> Verifică poziția -> Folosește metoda erase -> Actualizează vectorul -> Stop.

7. Concluzie:

  • Ștergerea unui element dintr-un vector este o operație frecvent utilizată în programare.
  • Vectorii dinamici (std::vector) simplifică gestionarea memoriei și operațiunile de ștergere.
  • Înțelegerea acestei operații ajută la gestionarea eficientă a datelor în aplicațiile C++.

Similar Posts

Lasă un răspuns

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