Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.48 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. class Pica {
  7. private:
  8. char ime[15];
  9. int cena;
  10. char* sostojki;
  11. int namaluvanje;
  12. public:
  13.  
  14. Pica(const char* ime = "", int cena = 0, const char* sostojki = "", int namaluvanje = 0) {
  15.  
  16. strcpy(this->ime, ime);
  17. this->cena = cena;
  18. this->sostojki = new char[strlen(sostojki) + 1];
  19. strcpy(this->sostojki, sostojki);
  20. this->namaluvanje = namaluvanje;
  21. }
  22.  
  23. Pica(const Pica& p) {
  24. strcpy(ime, p.ime);
  25. cena = p.cena;
  26. sostojki = new char[strlen(p.sostojki) + 1];
  27. strcpy(sostojki, p.sostojki);
  28. namaluvanje = p.namaluvanje;
  29. }
  30.  
  31. ~Pica() {
  32. delete[] sostojki;
  33. }
  34.  
  35. Pica& operator= (Pica& p) {
  36. if (this != &p) {
  37. strcpy(ime, p.ime);
  38. cena = p.cena;
  39. delete[] sostojki;
  40. sostojki = new char[strlen(p.sostojki) + 1];
  41. strcpy(sostojki, p.sostojki);
  42. namaluvanje = p.namaluvanje;
  43. }
  44. return *this;
  45. }
  46. void pecati(){
  47. cout << ime << " - " << sostojki << ", " << cena;
  48. }
  49.  
  50. bool istiSe(Pica p){
  51. return (strcmp(sostojki, p.sostojki) == 0);
  52. }
  53. int getNamaluvanje(){
  54. return namaluvanje;
  55. }
  56. int getCena(){
  57. return cena;
  58. }
  59. };
  60.  
  61. class Picerija {
  62.  
  63. private:
  64. char ime[15];
  65. Pica* pici;
  66. int br;
  67.  
  68. public:
  69. Picerija(const char *ime = ""){
  70. strncpy(this->ime, ime, 14);
  71. this->ime[14] = 0;
  72. pici = NULL;
  73. br = 0;
  74. }
  75. Picerija(const char *ime, Pica* pici, int br) {
  76. strncpy(this->ime, ime, 14);
  77. this->ime[14] = 0;
  78. this->br = br;
  79. this->pici = new Pica[br];
  80. for (int i = 0; i < br; i++)
  81. this->pici[i] = pici[i];
  82. }
  83.  
  84. Picerija(const Picerija &p) {
  85. strcpy(ime, p.ime);
  86. br = p.br;
  87. pici = new Pica[br];
  88. for (int i = 0; i < br; i++)
  89. pici[i] = p.pici[i];
  90. }
  91. Picerija& operator= (const Picerija &p) {
  92. if (this != &p) {
  93. strcpy(ime, p.ime);
  94. br = p.br;
  95. delete[] pici;
  96. pici = new Pica[br];
  97. for (int i = 0; i < br; i++)
  98. pici[i] = p.pici[i];
  99. }
  100. return *this;
  101. }
  102. ~Picerija() {
  103. delete[] pici;
  104. }
  105.  
  106. Picerija& operator+=(Pica &p){
  107. bool imaIsta = false;
  108. for (int i = 0; i < br; i++)
  109. if (pici[i].istiSe(p))
  110. imaIsta = true;
  111. if (!imaIsta)
  112. {
  113. Pica* tmp = new Pica[br + 1];
  114. for (int i = 0; i < br; i++)
  115. tmp[i] = pici[i];
  116. tmp[br++] = p;
  117. delete[] pici;
  118. pici = tmp;
  119. }
  120. return *this;
  121. }
  122.  
  123. void piciNaPromocija() {
  124. for (int i = 0; i < br; i++){
  125. if (pici[i].getNamaluvanje() != 0){
  126. pici[i].pecati();
  127. cout << " " << pici[i].getCena() * (1 - pici[i].getNamaluvanje() / 100.0) << endl;
  128. }
  129. }
  130.  
  131. }
  132. const char* getIme(){
  133. return ime;
  134. }
  135. void setIme(const char* ime){
  136. strncpy(this->ime, ime, 14);
  137. this->ime[14] = 0;
  138. }
  139.  
  140. };
  141. int main() {
  142.  
  143. int n;
  144. char ime[15];
  145. cin >> ime;
  146. cin >> n;
  147.  
  148. Picerija p1(ime);
  149. for (int i = 0; i < n; i++){
  150. char imp[100];
  151. cin.get();
  152. cin.getline(imp, 100);
  153. int cena;
  154. cin >> cena;
  155. char sostojki[100];
  156. cin.get();
  157. cin.getline(sostojki, 100);
  158. int popust;
  159. cin >> popust;
  160. Pica p(imp, cena, sostojki, popust);
  161. p1+=p;
  162. }
  163.  
  164. Picerija p2 = p1;
  165. cin >> ime;
  166. p2.setIme(ime);
  167. char imp[100];
  168. cin.get();
  169. cin.getline(imp, 100);
  170. int cena;
  171. cin >> cena;
  172. char sostojki[100];
  173. cin.get();
  174. cin.getline(sostojki, 100);
  175. int popust;
  176. cin >> popust;
  177. Pica p(imp, cena, sostojki, popust);
  178. p2+=p;
  179.  
  180. cout << p1.getIme() << endl;
  181. cout << "Pici na promocija:" << endl;
  182. p1.piciNaPromocija();
  183.  
  184. cout << p2.getIme() << endl;
  185. cout << "Pici na promocija:" << endl;
  186. p2.piciNaPromocija();
  187.  
  188. return 0;
  189. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement