#include "stdafx.h" #include #include #include using namespace std; #define SIZE 10 // создание шаблона класса stack template class stack { StackType stck[SIZE]; // массив, содержащий стек int tos; // индекс вершины стека public: void init() {tos = 0;} // инициализация стека void push(StackType ob); // поместить объект в стек StackType pop(); // извлечь объект из стека }; template void stack :: push(StackType ob) { if (tos == SIZE) { cout << "Stack is full" << endl; return; } stck[tos] = ob; tos++; } template StackType stack < StackType>:: pop() { if (tos == 0) { cout << "Stack is empty" << endl; return 0; } tos--; return stck[tos]; } int _tmain(int argc, _TCHAR* argv[]) {int i; char sym = 'a'; // символьный стек stack st_ch; st_ch.init(); for (i = 0; i < 7; i++) { st_ch.push(sym); sym++; } for (i = 0; i < 7; i++) cout << st_ch.pop() << ' '; cout << endl; // стек типа int stack st_int; st_int.init(); for (i = 0; i < 8; i++) st_int.push(i * 10); for (i = 0; i < 8; i++) cout << st_int.pop() << ' '; cout << endl; // стек типа double stack st_fl; st_fl.init(); for (i = 0; i < 5; i++) st_fl.push(i * 2.5); for (i = 0; i < 5; i++) cout << st_fl.pop() << ' '; cout << endl; _getch(); return 0; }