# PBinfo #875 – Stiva – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Cerința
Să se scrie un program care gestionează o stivă de numere întregi. Inițial stiva este vidă. Programul va citi de la tastatură o listă de operații, care pot fi:


push X – adaugă valoarea întreagă X pe stivă;
pop – elimină elementul din vârful stivei;
top – afișează elementul din vârful stivei.

Programul va realiza asupra stivei operațiile citite, în ordine. Afișările se fac pe ecran, câte o valoare pe linie.

Date de intrare
Programul citește de la tastatură un număr n, apoi cele n operații, 

Date de ieșire
Programul va afișa pe ecran numere rezultat ale operațiilor top, câte unul pe o linie.

Restricții și precizări

stiva nu va conține la un moment dat mai mult de 1000 elemente
elementele stivei vor fi cuprinse între -1.000.000 și 1.000.000
dacă la un moment dat se aplică operația pop și stiva nu conține niciun element, operația nu are efect
dacă la un moment dat se aplică operația top și stiva nu conține niciun element, operația nu are efect (nu se afișează nimic)

Exemplu:
Intrare

12
push 5
push 4
top 
push 7 
push -5
pop
top
pop
top
push 11
top
pop
Ieșire

4
7
4
11

## Cod sursă C++

```cpp
#include <iostream>
#include <cstring>
#include <cassert>
#include <cstdlib>
using namespace std;
char operatie[25];
int n , S[1005] , nrS = 0, X;
int main()
{
	cin >> n;
	for(int i =1 ; i <= n ; i ++)
	{
		assert(cin >> operatie);
		if(strcmp(operatie,"push") == 0)
		{
			assert(cin >> X);
			if(nrS < 1000)
				S[++nrS] = X;
			else
			{
				//aceasta situatie nu se intampla niciodata.
				cerr << "Prea multe elemente pe stiva";
				exit(1);
			}
		}
		if(strcmp(operatie,"pop") == 0)
			if(nrS > 0)
				nrS --;
		if(strcmp(operatie,"top") == 0)
			if(nrS > 0)
				cout << S[nrS] << "\n";
	}
	return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/875)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/875/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-875/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
