Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- const int MAX = 100;
- /////////////////////////////////////////////////////////////
- template <class Type>
- class Stack
- {
- private:
- Type * st = new Type[MAX];
- int top; // индекс вершины стека
- public:
- Stack(); // конструктор
- void push(Type var) // занести число в стек
- {
- st[++top] = var;
- }
- Type pop(); // взять число из стека
- Stack(const Stack &n);
- Stack(int n);
- ~Stack();
- operator bool()const;
- void operator +(Type x);
- Type operator --(int)
- {
- return st[top--];
- }
- void operator = (Stack &n);
- };
- /////////////////////////////////////////////////////////////
- template<class Type>
- Stack<Type>::Stack() // конструктор по умолчанию
- {
- top = -1;
- cout << "конструктор по умолчанию";
- }
- //---------------------------------------------------------—
- template<class Type>
- Type Stack<Type>::pop() // взять число из стека
- {
- return st[top--];
- }
- template<class Type>
- Stack<Type>::Stack(const Stack &n) // конструктор копирования
- {
- top = n.top;
- Type *s = new Type[top];
- for (int i = top; i >= 0; i--) {
- s[top - i] = n.st[i];
- }
- for (int i = 0; i <= top; i++) {
- st[top - i] = s[i];
- }
- }
- template<class Type>
- Stack<Type>::Stack(int n) // конструктор инициализации
- {
- top = -1;
- Type var;
- cout << "Вам необходимо ввести с клавиатуры значения, в количестве = " << n << "раз" << endl;
- for (int i = 0; i < n; i++) {
- cin >> var;
- push(var);
- }
- cout << "конструктор инициализации";
- }
- /*template<class Type>
- Stack<Type>::Stack(const Stack &n) // конструктор копирования
- {
- top = n.top;
- for (i = 0; i < top; i++) {
- st[i] = n.st[i]);
- }
- }*/
- template<class Type>
- Stack<Type>::~Stack() // деструктор
- {
- delete[] st;
- cout << "деструктор";
- }
- template<class Type>
- Stack<Type>::operator bool()const
- {
- cout << "оператор проверки на пустоту пустой/непустой - 1/0\n";
- if (top == -1) {
- f = false;
- return f;
- }
- else
- {
- f = true;
- return f;
- }
- return 0;
- }
- template<class Type>
- void Stack<Type>::operator +(Type x)
- {
- st[++top] = x;
- }
- template<class Type>
- void Stack<Type>::operator =(Stack &n)
- {
- top = n.top;
- Type *s = new Type[top];
- for (int i = top; i >= 0; i--) {
- s[top -i] = n.st[i];
- }
- for (int i = 0; i <= top; i++) {
- st[top - i] = s[i];
- }
- }
- //---------------------------------------------------------—
- int main()
- {
- setlocale(LC_ALL, "Russian");
- setlocale(LC_NUMERIC, "C");
- Stack<float> s1; // s1 - объект класса Stack<float>
- s1.push(1111.1F); // занести 3 float, вытолкнуть 3 float
- s1.push(2222.2F);
- s1.push(3333.3F);
- cout << bool(s1);
- cout << "1: " << s1.pop() << endl;
- cout << "2: " << s1.pop() << endl;
- cout << "3: " << s1.pop() << endl;
- cout << bool(s1);
- Stack<long> s2; // s2 - объект класса Stack<long>
- s2.push(123123123L); // занести 3 long, вытолкнуть 3 long
- s2.push(234234234L);
- s2.push(345345345L);
- cout << "1: " << s2.pop() << endl;
- cout << "2: " << s2.pop() << endl;
- cout << "3: " << s2.pop() << endl;
- Stack<int> s3(4); // s2 - объект класса Stack<long>
- cout << endl << s3-- << endl;
- s3 + 8;
- Stack<int> p = s3;
- cout << "1: " << s3.pop() << endl;
- cout << "2: " << s3.pop() << endl;
- cout << "3: " << s3.pop() << endl;
- cout << "4: " << s3.pop() << endl;
- cout << "1: " << p.pop() << endl;
- cout << "2: " << p.pop() << endl;
- cout << "3: " << p.pop() << endl;
- cout << "4: " << p.pop() << endl;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement