Posted By

jajojejeje on 11/10/18


Tagged


Versions (?)

PiasecznoLab4_2


 / Published in: C++
 

PiasecznoLab4_2

  1. #include "pch.h"
  2. #include <iostream>
  3. //#define Domieszka21 Domieszka2<Domieszka1<Stos2>>
  4. //#define WW void fun
  5.  
  6. template <typename M>
  7. void fun(M m);
  8.  
  9. using namespace std;
  10.  
  11. class Stos2 {
  12. static const int rozmiar = 10;
  13. protected:
  14. double stos[rozmiar];
  15. int top;
  16. public:
  17. int zajetosc() { return top; };
  18. Stos2() : top(0) {}
  19. virtual void push(const double& i) {
  20. //if (top == rozmiar)
  21. //throw Przepelnienie(typeid(i).name());
  22. stos[top++] = i;
  23. }
  24. virtual double pop() {
  25. //if (top == 0)
  26. //throw BrakDanych(typeid(stos[0]).name());
  27. return stos[--top];
  28. }
  29. };
  30.  
  31. template <class T>
  32. class Domieszka1 : public T {
  33. public:
  34. virtual double pop() {
  35. cout << "Na stosie znajduje sie " << T::top << " elementow" << endl;
  36. double tmp = T::pop();
  37. cout << "Ze stosu zdjeto watosc: "<< tmp << endl;
  38. return tmp;
  39. }
  40. };
  41.  
  42. template <typename T>
  43. class Domieszka2 : public T {
  44. double suma;
  45. public:
  46. Domieszka2<T>() : suma(0) {}
  47.  
  48. virtual double pop() {
  49. double tmp = T::pop();
  50. suma -= tmp;
  51. cout << "SUMA: " << suma << endl;
  52. return tmp;
  53. }
  54.  
  55. virtual void push(double w) {
  56. suma += w;
  57. cout << "SUMA: " << suma << endl;
  58. T::push(w);
  59. }
  60. };
  61.  
  62. class Domieszka12 : public Domieszka1<Domieszka2<Stos2>> {};
  63.  
  64. typedef Domieszka2<Domieszka1<Stos2>> Domieszka21;
  65.  
  66. int main()
  67. {
  68. Domieszka12 d12;
  69. fun(d12);
  70. cout << "---" << endl;
  71. Domieszka21 d21;
  72. fun(d21);
  73.  
  74. std::cout << "Hello World!\n";
  75. }
  76.  
  77. template <typename M>
  78. void fun(M m) {
  79. m.push(2.0);
  80. m.push(5.0);
  81. m.push(1.0);
  82. double wynik1 = m.pop();
  83. m.push(11.0);
  84. double wynik2 = m.pop();
  85. double wynik3 = m.pop();
  86. double wynik4 = m.pop();
  87. }

Report this snippet  

You need to login to post a comment.