Advertisement
AntonioVillanueva

Ensayo de una Pila paradojica con herencia absurda

May 16th, 2017
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.64 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdexcept>
  3. #include <fstream>
  4. using namespace std;
  5.  
  6. class Stack{
  7.     private:
  8.         static const int MIN_CAPACITY=10;
  9.         int *data; //declaracion      
  10.         int stack_top=-1;      
  11.         int capacity;
  12.     public:
  13.         Stack();
  14.         Stack(int MaxCapacity);
  15.         ~Stack();
  16.         virtual int size ();
  17.         virtual bool isEmpty();
  18.         virtual int top();
  19.         virtual void push(int value);
  20.         virtual int pop();
  21.         virtual void print();
  22. };
  23.  
  24. //Definiciones Stack
  25.         Stack::Stack():Stack(MIN_CAPACITY){}
  26.         Stack::Stack(int MaxCapacity) {data=new int [MaxCapacity] ;capacity=MaxCapacity;}
  27.         Stack::~Stack(){ delete[] data; }
  28.  
  29.         bool Stack::isEmpty(){ return (stack_top==-1);}//Retorna 1 si Stack empty 0 en otros casos
  30.        
  31.         int Stack::size (){return stack_top+1;};  
  32.         void Stack::print(){
  33.             for (int i=stack_top;i>-1;i--){
  34.                 cout <<"stack["<<i<<"] = "<<data[i]<<endl;
  35.             };    
  36.         }            
  37.  
  38.         void Stack::push(int value){              
  39.             //if (size()==data.size()){throw std::exception ("Stack Overflow Exception");}
  40.             stack_top++;
  41.             data[stack_top]=value;
  42.         }
  43.  
  44.         int Stack::pop(){
  45.             //if (isEmpty()){throw std::exception ("Stack Empty Exception");}
  46.             int topVal=data[stack_top];
  47.             stack_top--;
  48.             return topVal;
  49.            
  50.         }
  51.        
  52.         int Stack::top(){
  53.             //if (isEmpty()) {throw std::exception ("StackEmptyException");}
  54.             return data[stack_top];
  55.         }
  56.        
  57.        
  58. class Pila :public Stack{
  59.     public:
  60.         Pila();
  61.         Pila(int MaxCapacity);
  62.         ~Pila();
  63.        
  64.      private:
  65.      static const int MIN_CAPACITY=20;
  66.         int *data; //declaracion
  67.         int capacity;              
  68. };
  69.  
  70.         Pila::Pila():Pila(MIN_CAPACITY){}
  71.         Pila::Pila(int MaxCapacity) {data=new int [MaxCapacity] ;capacity=MaxCapacity;}
  72.         Pila::~Pila(){ delete[] data; }
  73.        
  74. int main() {
  75.        
  76.         Stack s(6);
  77.         for (int i=1;i<=6;i++){s.push(i);}    
  78.         cout <<endl<<"Size="<<s.size()<<endl;
  79.         cout <<endl<<"Top Stack="<<s.top()<<endl;  
  80.         s.print();
  81.         for (int i=1;i<=6;i++){cout<<s.pop()<<endl;}
  82.        
  83.         Pila p(5);
  84.         for (int i=1;i<=5;i++){p.push(i);}
  85.        
  86.         cout <<endl<<"Size="<<p.size()<<endl;
  87.         cout <<endl<<"Top Stack="<<p.top()<<endl;  
  88.         p.print();
  89.         for (int i=1;i<=5;i++){cout<<p.pop()<<endl;}            
  90.        
  91.         return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement