Advertisement
Guest User

Untitled

a guest
Oct 20th, 2014
335
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.28 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <Windows.h>
  5. #include <locale>
  6.  
  7. using namespace std;
  8.  
  9. template <class T> class _stack
  10. {
  11. public:
  12.     _stack() {cout << "Debug - stack created. Type of stack - " << typeid(T).name() << endl;};
  13.     ~_stack() {_ourstack.clear(); cout << "Debug - stack of " << typeid(T).name() << " destroyed" << endl;};
  14.     void _push(T value) {_ourstack.push_back(value); cout << "Debug - stack pushed with [ " << value << " ];" << endl;}; // Добавляет в конец новый элемент
  15.     void _pop() {cout << "Debug - stack popped, deleted element [ " << _ourstack.back() << " ];" << endl; _ourstack.pop_back(); }; // Удаляет последний элемент
  16.     T   _return() const {return _ourstack.back();}; // Возвращает последний элемент
  17.     void _print() const {cout << _ourstack.back();}; // Печатает последний элемент. Пытается напечатать через iostream/cout
  18.     void _clear() {_ourstack.clear();}; // Стирает весь стек
  19.     bool _empty() {return _ourstack.empty();};
  20.     int _size() const {return _ourstack.size();}; // Размер стека
  21. private:
  22.     vector <T> _ourstack;
  23. };
  24.  
  25. int main()
  26. {
  27.     setlocale(LC_ALL,"Russian");
  28.     SetConsoleOutputCP(1251);
  29.     SetConsoleCP(1251);
  30.  
  31.     cout << "Сенчурин Алексей. М-135, вариант 6;" << endl << endl;
  32.     cout << "Во всех вариантах требуется создать шаблон некоторого целевого класса А," << endl
  33.          << "возможно, реализованный с применением некоторого серверного класса В. " << endl
  34.          << "Это означает, что объект класса В используется как элемент класса А. " << endl
  35.          << "В качестве серверного класса может быть указан либо класс, созданный" << endl
  36.          << "программистом, либо класс из стандартной библиотеки — например, std::vector. " << endl
  37.          << "Варианты целевых или серверных классов, создаваемых программистом, приведены " << endl
  38.          << "в табл. 3.1. Информацию о работе с динамическими структурами данных " << endl
  39.          << "(линейный список, стек, односторонняя очередь, бинарное дерево) см. в учебнике " << endl
  40.          << "(с. 114-127), а также в первой книге практикума [2] (семинар 9)." << endl;
  41.  
  42.     system("pause");
  43.     system("cls");
  44.  
  45.     _stack<int> numbers;
  46.  
  47.     cout << "Size of stack : " << numbers._size() << endl;
  48.     numbers._push(45);
  49.     numbers._push(35);
  50.     numbers._push(25);
  51.     numbers._push(15);
  52.     numbers._push(5);
  53.     cout << "Size of stack : " << numbers._size() << endl;
  54.     cout << "At top of stack : " << numbers._return() << endl;
  55.     numbers._pop();
  56.     numbers._pop();
  57.     numbers._pop();
  58.     cout << "Size of stack : " << numbers._size() << endl;
  59.     cout << "At top of stack : " << numbers._return() << endl;
  60.     if (numbers._empty())
  61.         cout << "Stack is empty" <<  endl;
  62.     else
  63.         cout << "Size of stack is " << numbers._size() << endl;
  64.  
  65.     system("pause");
  66.     system("cls");
  67.  
  68.     _stack<char*> strings;
  69.  
  70.     cout << "Size of stack : " << strings._size() << endl;
  71.     strings._push("String 1");
  72.     strings._push("String 2");
  73.     strings._push("String 3");
  74.     strings._push("String 4");
  75.     strings._push("String 5");
  76.     strings._push("String 6");
  77.     cout << "Size of stack : " << strings._size() << endl;
  78.     cout << "At top of stack : " << strings._return() << endl;
  79.     strings._pop();
  80.     strings._pop();
  81.     strings._pop();
  82.     cout << "Size of stack : " << strings._size() << endl;
  83.     cout << "At top of stack : " << strings._return() << endl;
  84.     if (numbers._empty())
  85.         cout << "Stack is empty" <<  endl;
  86.     else
  87.         cout << "Size of stack is " << strings._size() << endl;
  88.  
  89.     system("pause");
  90.  
  91.     return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement