fork download
  1. #include<iostream>
  2. #include<string.h>
  3. #include <typeinfo>
  4. #define size 10
  5. using namespace std;
  6. template <class Type>
  7. //Stiva noastra propriu_zisa este Container
  8. class Stack {
  9. private:
  10. int varf_s;
  11. Type Container[size];
  12. public:
  13. //constructor
  14. Stack()
  15. {
  16. cout<< "Se initializeaza stiva: \n";
  17. varf_s=0;
  18. }
  19. //destructor
  20. ~Stack()
  21. {
  22. cout<< "Acesta este destructorul"<<"\n" ;
  23. }
  24. //metode membre
  25. void push(Type);
  26. Type pop();
  27. };
  28.  
  29. // Inainte de a explicita fiecare functie trebuie sa scriem sablonul:
  30. // template<class Type>
  31. template <class Type>
  32. // name_class<Type> operator de rezolutie (argumentul metodei)
  33. // |
  34. void Stack<Type>::push(Type value)
  35. // |
  36. // este void pt ca doar adauga in container
  37. // La noi Value este de tip Type
  38. {
  39. if(varf_s==size) {
  40. cout<<"Stiva este plina"<< "\n";
  41. return;
  42. }
  43. else {
  44. cout<< "Add to stack value: " << value<< "\n";
  45. }
  46.  
  47. Container[varf_s] = value;
  48.  
  49. varf_s++;
  50. }
  51. template <class Type> Type Stack<Type>::pop()
  52. {
  53. if(varf_s == 0) {
  54. Type out;
  55. cout<< "Stiva este goala.\n";
  56. return out;
  57. }
  58. varf_s--;
  59. cout<< "Scot din stiva cointainer: "<<Container[varf_s]<< "\n";
  60. return Container[varf_s];
  61. }
  62.  
  63. int main()
  64. {
  65. //declaram o stiva de string
  66. Stack<string> stack_s;
  67. stack_s.push("Ubuntu");
  68. stack_s.push("Suze");
  69. stack_s.push("RedHat");
  70. stack_s.push("Debian");
  71. stack_s.push("Fedora");
  72. stack_s.pop();
  73. stack_s.pop();
  74. stack_s.pop();
  75. stack_s.pop();
  76. stack_s.pop();
  77. stack_s.pop();//aici stiva va fi goala
  78. stack_s.pop();
  79.  
  80. //declaram o stiva de int
  81. cout<<endl;
  82. Stack<int> stack_int;
  83. stack_int.push(1);
  84. stack_int.push(2);
  85. stack_int.push(3);
  86. stack_int.pop();
  87. stack_int.pop();
  88. stack_int.pop();
  89.  
  90. cout<<endl;
  91. //declaram o stiva de double
  92. Stack<double> stack_d;
  93. stack_d.push(45.78);
  94. stack_d.push(23.78);
  95. stack_d.push(23.11);
  96. stack_d.pop();
  97. stack_d.pop();
  98. stack_d.pop();
  99. stack_d.pop();
  100.  
  101. cout<<endl;
  102. //declaram o stiva de float
  103. Stack<float> stack_f;
  104. stack_f.push(45.78);
  105. stack_f.push(23.78);
  106. stack_f.push(23.11);
  107. stack_f.pop();
  108. stack_f.pop();
  109. stack_f.pop();
  110. stack_f.pop();
  111.  
  112. cout<<endl;
  113. //declaram o stiva de caractere
  114. Stack<char> stack_c;
  115. stack_c.push('A');
  116. stack_c.push('B');
  117. stack_c.pop();
  118. stack_c.pop();
  119. stack_c.pop();
  120.  
  121. return(0);
  122. }
  123.  
Success #stdin #stdout 0.01s 5432KB
stdin
Standard input is empty
stdout
Se initializeaza stiva: 
Add to stack value: Ubuntu
Add to stack value: Suze
Add to stack value: RedHat
Add to stack value: Debian
Add to stack value: Fedora
Scot din stiva cointainer: Fedora
Scot din stiva cointainer: Debian
Scot din stiva cointainer: RedHat
Scot din stiva cointainer: Suze
Scot din stiva cointainer: Ubuntu
Stiva este goala.
Stiva este goala.

Se initializeaza stiva: 
Add to stack value: 1
Add to stack value: 2
Add to stack value: 3
Scot din stiva cointainer: 3
Scot din stiva cointainer: 2
Scot din stiva cointainer: 1

Se initializeaza stiva: 
Add to stack value: 45.78
Add to stack value: 23.78
Add to stack value: 23.11
Scot din stiva cointainer: 23.11
Scot din stiva cointainer: 23.78
Scot din stiva cointainer: 45.78
Stiva este goala.

Se initializeaza stiva: 
Add to stack value: 45.78
Add to stack value: 23.78
Add to stack value: 23.11
Scot din stiva cointainer: 23.11
Scot din stiva cointainer: 23.78
Scot din stiva cointainer: 45.78
Stiva este goala.

Se initializeaza stiva: 
Add to stack value: A
Add to stack value: B
Scot din stiva cointainer: B
Scot din stiva cointainer: A
Stiva este goala.
Acesta este destructorul
Acesta este destructorul
Acesta este destructorul
Acesta este destructorul
Acesta este destructorul