-
Notifications
You must be signed in to change notification settings - Fork 0
/
Pila_try.cpp
58 lines (56 loc) · 1.81 KB
/
Pila_try.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*
Estructura tipo PILA:
*/
#include<iostream>
int const TAM_PILA = 5;//Tamnio maximo de pila
using namespace std;
class Pila{
public:
class Llena{//Clase excepcion; Overflow-Desbordamiento
public:
int desborde;
Llena(int i):desborde(i){ }
};
class Vacia{//Clase excepcion; Underflow-Subdesbordamiento
public:
Vacia(){ }
};
Pila(){cima = -1;}
void meter(int item){
if(cima < (TAM_PILA-1))
pila[++cima] = item;
else
throw Llena(item);
}
int sacar(){
if(cima > -1)
return pila[cima--];
else
throw Vacia();
}
private://Atributos Clase Pila
int pila[TAM_PILA];
int cima;
};
int main(){
Pila obj;
int y = 5, x = 25;
//Bloque try
try{
obj.meter(x);
obj.meter(y);
obj.meter(12);
obj.meter(32);
obj.meter(4392);
//Pila se llena con 5; Se fuerza excepcion
obj.meter(500); //Lanza Pila::Desbordamineto
}
// Manejador de excepciones
catch(Pila::Llena &e){
cout<<"La pila se desbordo tratando de meter Val de: "<<e.desborde<<endl;
}
catch(Pila::Vacia &e){
cout<<"Faltan elementos"<<endl;
}
system("pause"); return 0;
}