Informatică, întrebare adresată de banmonica24, 8 ani în urmă

Scrieți definiția completa a funcției stergere, care primește doi parametri: un tablou
unidimensional si numărul efectiv de elemente din tablou(n<=100) si care șterge
elementul minim din tablou. Apelați funcția in programul principal.

Răspunsuri la întrebare

Răspuns de Sergetec
3

Salut!

Functia in C++

//presupunem ca elementele sunt indexate de la 1 la n

void sterge(int v[], int& n) {

   int mini = v[1], poz = 1; //cautam elementul minim si ii salvam pozitia

   for (int i = 2; i <= n; ++i) {

       if (v[i] < mini) {

           mini = v[i];

           poz = i;

       }

   }

   for (int i = poz + 1; i <= n; ++i) { //stergerea propriu-zisa

       v[i - 1] = v[i];

   }

   n--;

}

Apelarea intr-un program

#include <iostream>

using namespace std;

void sterge(int v[], int& n) {

   int mini = v[1], poz = 1;

   for (int i = 2; i <= n; ++i) {

       if (v[i] < mini) {

           mini = v[i];

           poz = i;

       }

   }

   for (int i = poz + 1; i <= n; ++i) {

       v[i - 1] = v[i];

   }

   n--;

}

int main() {

   int n, a[1001];

   cin >> n;

   for (int i = 1; i <= n; ++i) {

       cin >> a[i];

   }

   sterge(a, n);

   for (int i = 1; i <= n; ++i) {

       cout << a[i] << " ";

   }

   return 0;

}

Explicatie:
Stergerea propriu-zisa este de fapt mutarea elementului minim la sfarsitul vectorului, evident mutand si elementele de dupa el cu o pozitie in spate, iar la final scazand lungimea vectorului pentru a nu mai afisa ultimul element.

Alte întrebări interesante