Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. //main.cpp
  2. #include <iostream>
  3. #include "Sklad.h"
  4. #include "Tovar.h"
  5.  
  6. using namespace std;
  7.  
  8. int main() {
  9. Tovar t1;
  10. Tovar t2;
  11. t1.setNazov("auto");
  12. t1.setCena(9999);
  13. t1.setPocetKusov(5);
  14. t2.setNazov("bicykel");
  15. t2.setCena(500);
  16. t2.setPocetKusov(10);
  17. cout << t1 << endl << t2 << endl;
  18. cout << (t1 < t2) << endl;
  19. Tovar::styp = 1;
  20. cout << (t1 < t2) << endl;
  21. return 0;
  22. }
  23.  
  24. //Tovar.h
  25. #pragma once
  26. #include <string>
  27. #include <ostream>
  28.  
  29. using namespace std;
  30.  
  31. char* kopiruj(const char* c);
  32.  
  33. class Tovar {
  34. private:
  35. char* nazov = nullptr;
  36. double cena = 0;
  37. int pocetKusov = 0;
  38. public:
  39. static int styp; //sortovaci typ
  40. ~Tovar() {
  41. delete[] nazov;
  42. }
  43.  
  44. Tovar& operator=(const Tovar& zdroj) {
  45. if (this != &zdroj) {
  46. delete[] nazov;
  47. nazov = kopiruj(zdroj.nazov);
  48. cena = zdroj.cena;
  49. pocetKusov = zdroj.pocetKusov;
  50. }
  51. return *this;
  52. }
  53.  
  54. char* getNazov() { return nazov; }
  55.  
  56. double getCena() { return cena; }
  57.  
  58. int getPocetKusov() { return pocetKusov; }
  59.  
  60. void setNazov(const char* pNazov) { nazov = kopiruj(pNazov); }
  61.  
  62. void setCena(double pCena) { this->cena = pCena; }
  63.  
  64. void setPocetKusov(int pPocetKusov) { this->pocetKusov = pPocetKusov; }
  65.  
  66. friend bool operator<(Tovar &op1, Tovar &op2);
  67.  
  68. friend ostream& operator<<(ostream &os, Tovar &h);
  69.  
  70. };
  71.  
  72. //Tovar.cpp
  73. #include "Tovar.h"
  74.  
  75. int Tovar::styp = 0;
  76.  
  77. char* kopiruj(const char* zdroj) {
  78. if (zdroj && *zdroj) {
  79. int dlzka = strlen(zdroj);
  80. char* kopia = new char[dlzka + 1];
  81. strcpy(kopia, zdroj);
  82. return kopia;
  83. }
  84. return nullptr;
  85. }
  86.  
  87. bool operator<(Tovar& op1, Tovar& op2) {
  88. int ret = 0;
  89. int retNazov = strcmp(op1.nazov, op2.nazov);
  90. int retCena = op1.cena - op2.cena;
  91. int retPocet = op1.pocetKusov - op2.pocetKusov;
  92. switch (Tovar::styp) {
  93. case 0:
  94. ret = retNazov;
  95. if (ret == 0) {
  96. ret = retCena;
  97. if (ret == 0) ret = retPocet;
  98. }
  99. break;
  100. case 1:
  101. ret = retCena;
  102. if (ret == 0) {
  103. ret = retNazov;
  104. if (ret == 0) ret = retPocet;
  105. }
  106. break;
  107. case 2:
  108. ret = retPocet;
  109. if (ret == 0) {
  110. ret = retNazov;
  111. if (ret == 0) ret = retCena;
  112. }
  113. break;
  114. }
  115. return ret < 0;
  116. }
  117.  
  118. ostream& operator<<(ostream& os, Tovar& h) {
  119. os << "Nazov: " << h.nazov << "\tCena: " << h.cena << "\tPocet: " << h.pocetKusov;
  120. return os;
  121. }
  122.  
  123. //Sklad.h
  124. #pragma once
  125. #include "Tovar.h"
  126.  
  127. class Sklad {
  128.  
  129. };
  130.  
  131. //Sklad.cpp
  132. #include "Sklad.h"
  133. #include "Tovar.h"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement