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

Sa se scrie un program care adauga intr-o stiva numere de la 1 la 10 si elimina numerele impare. Sa se afiseze stiva care contine doar numerele pare din intervalul [1,10].

Răspunsuri la întrebare

Răspuns de andrei750238
1

#include <iostream>

#include <stack>

using namespace std;

int main() {

//Declara stivele care retin date de tip int

stack<int> stiva;

stack<int> aux;

//Adauga numerele de la 1 la 10 in stiva

for (int nr = 1; nr <= 10; nr++)

 stiva.push(nr);

//Pune numerele pare in stiva secundara, elimina numerele pare

while (!stiva.empty()) {

 //Ia elementul din varf

 int element_varf = stiva.top();

 stiva.pop();

 //Adauga in stiva auxiliara daca numarul e par

 if (element_varf % 2 == 0)

  aux.push(element_varf);

}

//Muta elementele inapoi in stiva principala

while (!aux.empty()) {

 //Ia elementul din varf

 int element_varf = aux.top();

 aux.pop();

 //Adauga elementul in stiva principala

 stiva.push(element_varf);

}

//Afiseaza rezultatul

while (!stiva.empty()) {

 //Afiseaza elementul din varf apoi sterge-l

 cout << stiva.top() << " ";

 stiva.pop();

}

}

► Explicatie stiva - perspectiva STL C++ :

Stiva e o structura de date la care accesul, insertia si stergerea se face mereu la ultimul element. Limbajul C++ pune la dispozitie programatorilor prin STL diferite containere si adaptoare, printre care si stiva (stack). Pentru a folosi stiva va trebui sa includem biblioteca <queue>

Instructiunea queue<int> stiva va declara o stiva ce contine numere intregi.

Functiile membre principale pentru o stiva sunt :

  • empty() → Returneaza 1 daca stiva e goala si 0 altfel
  • top() → Returneaza elementul din varful stivei, fara sa il stearga
  • pop() → Sterge elementul din varful stivei
  • push(valoare) → Adauga valoare in varful stivei.

Alte functii membre si informatii detaliate despre acestea le poti gasi consultand documentatia de pe internet.

Daca doresti sa afli mai multe despre structurile puse la dispozitie de STL iti recomand intrebarea aceasta in care folosim coada (queue) :

https://brainly.ro/tema/9935280

► Explicatie rezolvare problema :

Vom folosi o stiva auxiliara pentru a memora valorile pare ce trebuie retinute si reintroduse in stiva principala. Avem nevoie de aceasta stiva deoarece operatiile de I/O se realizeaza doar la varful stivei.

Dupa inserarea elementelor 1,2,...10 in stiva principala vom avea [1,2,3,4,...10], cu varful in 10.

Dupa operatia de copiere in a doua stiva a elementelor pare, stiva principala e goala iar cea secundara are elementele [10, 8, 6, 4, 2], unde varful stivei este reprezentat de elementul 2.

Vom copia acum valorile din stiva secundara in stiva principala. In stiva principala vom avea [2, 4, 6, 8, 10], cu varful in 10.

Tinand cont ca afisarea se face din varful stivei, pe ecran se va afisa 10 8 6 4 2

Alte întrebări interesante