|

Inserarea unei valori într-un vector în C++ 23


1. Obiectivele lecției:

  • Să înțeleagă principiul inserării unei valori într-un vector.
  • Să implementeze algoritmi pentru inserarea unei valori la o poziție specificată.
  • Să rezolve probleme practice care implică modificarea unui vector.

2. Conținutul lecției:


Ce este un vector?

  • Un vector (array) este o structură de date care stochează o colecție de valori de același tip.
  • Vectorii au o dimensiune fixă, ceea ce înseamnă că dimensiunea trebuie specificată la momentul declarării.

Inserarea unei valori într-un vector


1. Principiu:

  1. Dacă vectorul are un spațiu suficient pentru a accepta o valoare nouă, deplasăm elementele pentru a face loc.
  2. Plasăm valoarea în poziția specificată.
  3. Actualizăm dimensiunea logică a vectorului (numărul de elemente stocate).

2. Pași pentru inserare:

  1. Identificați poziția: Determinați indexul unde se va insera valoarea.
  2. Deplasați elementele: Mutați toate elementele de la poziția respectivă spre dreapta.
  3. Inserați valoarea: Adăugați valoarea la poziția dorită.

Pseudocod:

Intrare: vector, dimensiune, pozitie, valoare

Dacă pozitie < 0 sau pozitie > dimensiune:

    Afișează eroare

Altfel:

    Pentru i = dimensiune – 1 la pozitie:

        vector[i + 1] = vector[i]

    vector[pozitie] = valoare

    dimensiune++


3. Cod în C++

Exemplu 1: Inserarea unei valori într-un vector fix

#include <iostream>

using namespace std;

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

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

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

        return;

    }

    // Deplasăm elementele spre dreapta

    for (int i = dim; i > pozitie; i–) {

        arr[i] = arr[i – 1];

    }

    // Inserăm valoarea

    arr[pozitie] = valoare;

    // 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, valoare;

    cout << „Introduceti pozitia si valoarea de inserat: „;

    cin >> pozitie >> valoare;

    inserareValoare(arr, dim, pozitie, valoare);

    cout << „Vector dupa inserare: „;

    afisareVector(arr, dim);

    return 0;

}


Exemplu 2: Inserarea într-un vector dinamic (folosind std::vector)

#include <iostream>

#include <vector>

using namespace std;

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

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

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

        return;

    }

    // Inserăm valoarea folosind metoda `insert`

    arr.insert(arr.begin() + pozitie, valoare);

}

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, valoare;

    cout << „Introduceti pozitia si valoarea de inserat: „;

    cin >> pozitie >> valoare;

    inserareValoare(arr, pozitie, valoare);

    cout << „Vector dupa inserare: „;

    afisareVector(arr);

    return 0;

}


4. Complexitatea algoritmului

  1. Inserare într-un vector fix (array):
    • Complexitate temporală: O(n), unde nnn este dimensiunea vectorului. Este nevoie de deplasarea elementelor.
    • Complexitate spațială: O(1) – nu necesită spațiu suplimentar.
  2. Inserare într-un vector dinamic (std::vector):
    • Complexitate temporală: O(n), datorită deplasării elementelor.
    • Complexitate spațială: Depinde de gestionarea internă a memoriei în std::vector.

5. Activități practice pentru elevi

  1. Scrieți un program care permite utilizatorului să insereze mai multe valori în diferite poziții dintr-un vector.
  2. Implementați o funcție care inserează o valoare doar dacă aceasta nu există deja în vector.
  3. Realizați un program care inserează un element într-un vector sortat, păstrând ordinea.

6. Scheme logice

  1. Inserarea într-un vector fix:
    • Start -> Verifică poziția -> Deplasează elementele -> Inserează valoarea -> Actualizează dimensiunea -> Stop.
  2. Inserarea într-un std::vector:
    • Start -> Folosește metoda insert -> Actualizează vectorul -> Stop.

7. Concluzie:

  • Inserarea într-un vector necesită deplasarea elementelor, ceea ce poate face operația costisitoare pentru vectori mari.
  • Folosirea vectorilor dinamici (std::vector) simplifică gestionarea memoriei și oferă metode predefinite pentru inserare.
  • Practica ajută la înțelegerea implementării și optimizării acestor operații.

Similar Posts

Lasă un răspuns

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