Advertisement
Guest User

Untitled

a guest
Feb 6th, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.29 KB | None | 0 0
  1. #include <iostream>
  2. #include <String>
  3. #include <conio.h>
  4. #include <fstream>
  5. #include <vector>
  6. using namespace std;
  7.  
  8. class Medicament
  9. {
  10. private:
  11. string denumire;
  12. float pret;
  13. public:
  14. Medicament()
  15. {
  16. pret = 0.0;
  17. denumire = "fara denumire";
  18. };
  19. Medicament(string den, float p)
  20. {
  21. denumire = den;
  22. pret = p;
  23. };
  24. Medicament(Medicament& m)
  25. {
  26. this->denumire = m.denumire;
  27. this->pret = m.pret;
  28. };
  29. ~Medicament()
  30. {
  31. }
  32. void setDenumire(string den)
  33. {
  34. this->denumire = den;
  35. };
  36. void setPret(float p)
  37. {
  38. this->pret = p;
  39. };
  40. float getPret()
  41. {
  42. return this->pret;
  43. };
  44. Medicament& operator=(Medicament& m)
  45. {
  46. this->denumire = m.denumire;
  47. this->pret = m.pret;
  48. return *this;
  49. };
  50. friend ostream& operator<<(ostream& out, Medicament& m)
  51. {
  52. out << "Denumire: " << m.denumire<<endl;
  53. out << "Pret: " << m.pret<<endl;
  54. return out;
  55. };
  56. };
  57.  
  58.  
  59. class Reteta
  60. {
  61. private:
  62. Medicament* medicamente;
  63. int n;
  64. public:
  65. Reteta()
  66. {
  67. this->n = 0;
  68. medicamente = NULL;
  69. };
  70. Reteta(Medicament* mP, int nP)
  71. {
  72. this->n = nP;
  73. this->medicamente = new Medicament[n];
  74. for (int i = 0; i < n;i++)
  75. {
  76. medicamente[i] = mP[i];
  77. }
  78. };
  79.  
  80.  
  81. Reteta(Reteta& rP)
  82. {
  83. this->n = rP.n;
  84. this->medicamente = new Medicament[n];
  85. for (int i = 0; i < n; i++)
  86. {
  87. medicamente[i] = rP.medicamente[i];
  88. }
  89. };
  90.  
  91.  
  92. ~Reteta()
  93. {
  94. this->n = 0;
  95. if (this->medicamente != NULL)
  96. delete[] this->medicamente;
  97. };
  98. friend ostream& operator<<(ostream& out, Reteta& r)
  99. {
  100. for (int i = 0; i < r.n; i++)
  101. {
  102. out<<r.medicamente[i];
  103. }
  104. return out;
  105. };
  106. void adaugaMedicament(Medicament& m)
  107. {
  108.  
  109. if (this->medicamente != NULL&&this->n!=0)
  110. {
  111. Medicament* temp = new Medicament[n + 1];
  112. for (int i = 0; i < n; i++)
  113. {
  114. temp[i] = this->medicamente[i];
  115. }
  116. delete[] this->medicamente;
  117. this->medicamente = new Medicament[n+1];
  118. for (int i = 0; i < n; i++)
  119. {
  120. this->medicamente[i] = temp[i];
  121. }
  122. }
  123. else
  124. {
  125. this->medicamente = new Medicament[n + 1];
  126. }
  127. this->medicamente[n] = m;
  128. n = n + 1;
  129. };
  130.  
  131. Reteta& operator=(Reteta& r)
  132. {
  133. if (this->medicamente != NULL&&this->n != 0)
  134. {
  135. delete[] this->medicamente;
  136. }
  137. this->n = r.n;
  138. this->medicamente = new Medicament[n];
  139. for (int i = 0; i < n; i++)
  140. {
  141. this->medicamente[i] = r.medicamente[i];
  142. }
  143. return *this;
  144. };
  145.  
  146. int getN()
  147. {
  148. return this->n;
  149. };
  150.  
  151. Medicament& operator[](int i)
  152. {
  153. return medicamente[i];
  154. };
  155.  
  156. virtual float getValoare()
  157. {
  158. float suma = 0;
  159. for (int i = 0; i < this->n; i++)
  160. {
  161. suma = suma + this->medicamente[i].getPret();
  162. }
  163. return suma;
  164. };
  165.  
  166. friend ifstream& operator>>(ifstream& in, Reteta& r)
  167. {
  168.  
  169. int nrMedicamente,randuri ,randuriCitite=0;
  170. float pretMedicament;
  171. string data, numeMedicament;
  172. Medicament m;
  173. string::size_type sz;
  174. in >> nrMedicamente;
  175. randuri = nrMedicamente * 2;
  176. if (r.medicamente != NULL)
  177. {
  178. delete[] r.medicamente;
  179. }
  180. while (randuriCitite<randuri)
  181. {
  182. randuriCitite++;
  183. in >> data;
  184. if (randuriCitite % 2 == 1)
  185. {
  186. numeMedicament = data;
  187. }
  188. else
  189. {
  190.  
  191. pretMedicament = stof (data,&sz);
  192. m.setDenumire(numeMedicament);
  193. m.setPret(pretMedicament);
  194. r.adaugaMedicament(m);
  195. }
  196. }
  197. return in;
  198. };
  199. };
  200.  
  201.  
  202. class RetetaCompensata : public Reteta
  203. {
  204. private:
  205. float procentCompensat;
  206. public:
  207. RetetaCompensata()
  208. {
  209. procentCompensat = 0.0;
  210. }
  211. RetetaCompensata(float procent)
  212. {
  213. procentCompensat = procent;
  214. }
  215. RetetaCompensata(Reteta& rP, float procent):Reteta(rP)
  216. {
  217. procentCompensat = procent;
  218. }
  219. ~RetetaCompensata()
  220. {
  221. }
  222.  
  223. float getValoare()
  224. {
  225. float suma=Reteta::getValoare();
  226. return suma*procentCompensat;
  227. };
  228.  
  229.  
  230.  
  231. RetetaCompensata& operator=(Reteta& r)
  232. {
  233. this->procentCompensat = 0;
  234. return *this;
  235. };
  236. };
  237.  
  238.  
  239. int main()
  240. {
  241. //partea 1
  242. Medicament nurofen("Nurofen", 11.25f);
  243. Medicament aspirina = nurofen;
  244. aspirina.setDenumire("Aspirina");
  245. aspirina.setPret(4.5f);
  246. {
  247. Medicament temp;
  248. temp = nurofen;
  249. cout << temp << endl;
  250. }
  251. cout << nurofen << endl;
  252. cout << aspirina << endl;
  253.  
  254.  
  255. //partea 2
  256. Medicament medicamente[] = { aspirina,nurofen };
  257. Reteta r0(medicamente, 2);
  258. cout << r0 << endl;
  259.  
  260.  
  261.  
  262. //partea 3
  263. Reteta r1;
  264. r1.adaugaMedicament(nurofen);
  265. r1.adaugaMedicament(aspirina);
  266. for (int i = 0; i < r1.getN(); i++)
  267. cout << r1[i] << endl;
  268.  
  269.  
  270. //partea 4
  271. RetetaCompensata r2(0.5);
  272. r2.adaugaMedicament(nurofen);
  273. r2.adaugaMedicament(aspirina);
  274. RetetaCompensata r3(r1, (float)0.2);
  275. Reteta*p = &r1;
  276. cout << p->getValoare() << endl;
  277. p = &r3;
  278. cout << p->getValoare() << endl;
  279.  
  280.  
  281.  
  282. //partea 5
  283. Reteta r4;
  284. ifstream fisier("retete.txt");
  285. fisier >> r4;
  286. cout << endl << endl;
  287. cout << r4 << endl;
  288.  
  289.  
  290. //partea 6
  291. RetetaCompensata* pReteta = new RetetaCompensata[5];
  292. pReteta[0] = r0;
  293. pReteta[1] = r1;
  294. pReteta[2] = r2;
  295. pReteta[3] = r3;
  296. pReteta[4] = r4;
  297. int iteratorv2 = 0;
  298. vector<Reteta> listaRetete(pReteta, pReteta + 5);
  299. cout << endl << endl;
  300. for (vector<Reteta>::iterator it = listaRetete.begin(); it != listaRetete.end(); ++it)
  301. {
  302. cout << *it << "Valoare: " << listaRetete[iteratorv2].getValoare() << endl<<endl;
  303. iteratorv2++;
  304. }
  305.  
  306.  
  307.  
  308.  
  309. _getch();
  310.  
  311.  
  312. return 0;
  313. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement