Advertisement
Guest User

Untitled

a guest
Nov 14th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. const int SIZE = 5;
  4.  
  5. template < class T > class queue {
  6. T qu[SIZE]; //содержит очередь
  7. int top; //индекс вершины очереди
  8. public:
  9. void init() //инициализация очереди
  10. {
  11. top = 0;
  12. }
  13. void push(T item); //помещает объект в очередь
  14. T pop(); //выталкивает объект из очереди
  15. };
  16.  
  17. // функция помещения элементов в очередь
  18. template < class T > void queue < T > ::push(T item) //к имени класса
  19. {
  20. if (top >= SIZE) {
  21. throw "Overload of queue \n"; //генерирование искл ситуации
  22. cout << endl;
  23. }
  24. qu[top] = item;
  25. top++;
  26. }
  27.  
  28. //функция извлечения объектов из очереди
  29. template < class T > T queue < T > ::pop() {
  30.  
  31. if (top <= 0) {
  32. throw "queue not full! "; //генерирование искл ситуации
  33. }
  34.  
  35. T tmp = qu[0];
  36. for(int i = 0; i < top-1; i++){
  37. qu[i] = qu[i+1];
  38. }
  39.  
  40. top--;
  41. return tmp;
  42. }
  43.  
  44. int main() {
  45. int i;
  46. queue < char > qu1; //создание символьной очереди
  47. queue < int > dqu1; //созданиие очереди со значениями типа инт
  48. queue < double > dqu2; //созданиие очереди со значениями типа дабл
  49.  
  50. //инициализация очередей
  51. qu1.init();
  52. dqu1.init();
  53. dqu2.init();
  54.  
  55. //помещение объектов в очереди
  56. try {
  57.  
  58. for (i = 0; i < 5; i++) {
  59. qu1.push('a' + i);
  60. dqu1.push((i + 1) / 2);
  61. dqu2.push((i + 100.0) / 2.0);
  62. }
  63.  
  64.  
  65. for (i = 0; i < 5; i++)
  66. cout << "Queue qu1 " << qu1.pop() << "\n";
  67.  
  68. cout << endl;
  69.  
  70. for (i = 0; i < 5; i++)
  71. cout << "Queue dqu1 " << dqu1.pop() << "\n";
  72.  
  73. cout << endl;
  74.  
  75. //прога выдает ошибку-искл ситуация
  76. for (i = 0; i < 999; i++)
  77. cout << "Queue dqu2 " << dqu2.pop() << "\n";
  78.  
  79. } catch (const char * S) {
  80.  
  81. cout << "Error " << S << endl << endl;
  82. return 0; //возврат при не полной очереди
  83.  
  84. }
  85.  
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement