Advertisement
Guest User

Untitled

a guest
Feb 9th, 2016
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.12 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. #include <ostream>
  4. using namespace std;
  5.  
  6. class platnosc {
  7. protected:
  8. char* nazwa;
  9. double kwota;
  10. int day, month, year;
  11. public:
  12. platnosc() {
  13. nazwa = nullptr;
  14. }
  15. platnosc(char* n, double k, int d, int m, int y) {
  16. nazwa = new char[strlen(n + 1)];
  17. strcpy(nazwa, n);
  18. kwota = k;
  19. day = d;
  20. month = m;
  21. year = y;
  22. }
  23. platnosc(const platnosc &p) {
  24. nazwa = new char[strlen(p.nazwa + 1)];
  25. strcpy(nazwa, p.nazwa);
  26. kwota = p.kwota;
  27. day = p.day;
  28. month = p.month;
  29. year = p.year;
  30. }
  31. platnosc& operator=(platnosc const &p) {
  32. if (this == &p)
  33. return *this;
  34. if (nazwa != nullptr)
  35. delete[] nazwa;
  36. nazwa = new char[strlen(p.nazwa + 1)];
  37. strcpy(nazwa, p.nazwa);
  38. kwota = p.kwota;
  39. day = p.day;
  40. month = p.month;
  41. year = p.year;
  42. return *this;
  43. }
  44.  
  45. bool operator>(platnosc const &w) {
  46. if ((year>w.year) || (year == w.year && month>w.month) || (year == w.year && month == w.month && day>w.day)) {
  47. return true;
  48. }
  49. return false;
  50. }
  51.  
  52. friend ostream &operator<<(ostream &output, const platnosc &p);
  53. };
  54.  
  55. class stosp{
  56. public:
  57. int szczyt, pojemnosc;
  58. platnosc* stos;
  59. //public:
  60. stosp() {
  61. stos = nullptr;
  62. }
  63. stosp(int x){
  64. pojemnosc = x;
  65. stos = new platnosc[pojemnosc];
  66. szczyt = 0;
  67. }
  68. ~stosp() {
  69. delete[] stos;
  70. }
  71. stosp(const stosp &s) {
  72. szczyt = s.szczyt;
  73. pojemnosc = s.pojemnosc;
  74. for (int i = 0; i < szczyt; i++)
  75. stos[i] = s.stos[i];
  76. }
  77.  
  78. platnosc* operator--() {
  79. int tmp = szczyt;
  80. szczyt--;
  81. return &stos[tmp];
  82. }
  83. platnosc* operator++() { // druga wersja --
  84. platnosc* tmp = &stos[szczyt - 1];
  85. szczyt--;
  86. return tmp;
  87. }
  88.  
  89. stosp & operator+=(platnosc*p) {
  90. szczyt++;
  91. if (szczyt > pojemnosc) {
  92. cout << "przekroczono zakres";
  93. return *this;
  94. }
  95. stos[szczyt] = *p;
  96. return *this;
  97. }
  98. platnosc* operator[](int i) {
  99. if (szczyt < i) {
  100. cout << "wypierdalaj nie ma";
  101. return &stos[0];
  102. }
  103. return &stos[i];
  104. }
  105.  
  106. friend ostream &operator<<(ostream &output, const platnosc &p);
  107. };
  108.  
  109.  
  110. class kolejka :public stosp {
  111. public:
  112. kolejka()
  113. {
  114. stos = nullptr;
  115. }
  116.  
  117. kolejka(int _dl)
  118. {
  119. pojemnosc = _dl;
  120. szczyt = 0;
  121. stos = new platnosc[pojemnosc];
  122.  
  123. }
  124.  
  125. kolejka(const kolejka &w)
  126. {
  127. pojemnosc = w.pojemnosc;
  128. szczyt = w.szczyt;
  129. stos = new platnosc[pojemnosc];
  130. for (int i = 0; i < szczyt; i++)
  131. {
  132. stos[i] = w.stos[i];
  133. }
  134.  
  135. }
  136.  
  137.  
  138.  
  139. kolejka& operator=(const stosp &s)
  140. {
  141. szczyt = s.szczyt;
  142. pojemnosc = s.pojemnosc;
  143. stos = new platnosc[pojemnosc];
  144. platnosc* tmp;
  145. for (int i = 0; i < szczyt; i++)
  146. {
  147. stos[i]= s.stos[i];
  148. for (int j = 0; j < szczyt; j++)
  149. {
  150. if (stos[j] > s.stos[i])
  151. {
  152. tmp = &s.stos[i];
  153. s.stos[i] = stos[j];
  154. stos[j] = *tmp;
  155. }
  156. }
  157. }
  158. return *this;
  159. }
  160.  
  161.  
  162. friend ostream &operator<<(ostream &output, const platnosc &p);
  163.  
  164.  
  165. };
  166.  
  167.  
  168. ostream &operator<<(ostream &output, const platnosc &p) {
  169. output << "nazwa: " << p.nazwa << endl << "-------------------" << endl << "kwota:" << endl << "-----------------" << endl << "data: " << p.day << "." << p.month << "." << p.year << endl << endl;
  170. return output;
  171. }
  172.  
  173.  
  174.  
  175. int main()
  176. {
  177. stosp stosik(10);
  178.  
  179. platnosc* tmp1 = new platnosc("Kupa", 110, 3, 13, 2009);
  180. platnosc* tmp2 = new platnosc("Paluch ssie dzide", 100, 1, 0, 2012);
  181. platnosc* tmp3 = new platnosc("ABC", 100, 2, 3, 2012);
  182. platnosc* tmp4 = new platnosc(*tmp2);
  183. platnosc* tmp5 = new platnosc();
  184.  
  185. tmp5 = tmp1;
  186. // cout << *tmp1;
  187. // cout << *tmp2;
  188. // cout << *tmp4;
  189. // cout << *tmp5;
  190.  
  191. stosik += tmp1;
  192. stosik += tmp2;
  193. stosik += tmp3;
  194. stosik += tmp4;
  195. stosik += tmp5;
  196. for (int i = 1; i < stosik.szczyt+1; i++)
  197. cout << i << "<-index"<< endl<< *stosik[i];
  198. cout << ".................................................." << endl;
  199. tmp5 = ++stosik;
  200.  
  201. for (int i = 1; i < stosik.szczyt+1; i++)
  202. cout << i << "<-index"<<endl << *stosik[i];
  203.  
  204. kolejka czystej;
  205.  
  206. cout << ".................................................." << endl;
  207. czystej = stosik;
  208. for (int i = 1; i < 5; i++)
  209. cout << *czystej[i];
  210.  
  211. getchar();
  212. return 0;
  213. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement