Advertisement
Guest User

Untitled

a guest
Jan 16th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.82 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. class Piesa
  5. {
  6. private:
  7. char* denumire;
  8. float valoare;
  9.  
  10. public:
  11. Piesa()
  12. {
  13. this->denumire = new char[strlen("N/A") + 1];
  14. strcpy(this->denumire, "N/A");
  15. this->valoare = 0;
  16. }
  17.  
  18. Piesa(char* denumire, float valoare)
  19. {
  20. if (denumire != NULL)
  21. {
  22. this->denumire = new char[strlen(denumire) + 1];
  23. strcpy(this->denumire, denumire);
  24. }
  25. else
  26. this->denumire = NULL;
  27. this->valoare = valoare;
  28. }
  29.  
  30. Piesa(const Piesa& p)
  31. {
  32. if (p.denumire != NULL)
  33. {
  34. this->denumire = new char[strlen(p.denumire) + 1];
  35. strcpy(this->denumire, p.denumire);
  36. }
  37. else
  38. this->denumire = NULL;
  39. this->valoare = p.valoare;
  40. }
  41.  
  42. Piesa& operator=(const Piesa& p)
  43. {
  44. if (this->denumire != NULL)
  45. delete[] this->denumire;
  46. if (p.denumire != NULL)
  47. {
  48. this->denumire = new char[strlen(p.denumire) + 1];
  49. strcpy(this->denumire, p.denumire);
  50. }
  51. else
  52. this->denumire = NULL;
  53. this->valoare = p.valoare;
  54. return *this;
  55. }
  56.  
  57. ~Piesa()
  58. {
  59. if (this->denumire != NULL)
  60. delete[] this->denumire;
  61. }
  62.  
  63. friend ostream& operator<<(ostream& out, const Piesa& p)
  64. {
  65. out << "\nPiesa " << p.denumire << " are valoarea: " << p.valoare;
  66. return out;
  67. }
  68.  
  69.  
  70. void setDenumire(char* nume) {
  71. this->denumire = new char[strlen(nume)+1];
  72. strcpy(this->denumire , nume);
  73. }
  74. void setValoare(float f) {
  75. this->valoare = f;
  76. }
  77.  
  78. float getValoare() {
  79. return this->valoare;
  80. }
  81.  
  82. };
  83.  
  84. class MijlocFix
  85. {
  86. private:
  87. const int id;
  88. char* denumire;
  89. int durataFunctionare;
  90. Piesa* colectiePiese;
  91. int nrPiese;
  92. static int nr;
  93.  
  94. public:
  95. //constructor fara param
  96. MijlocFix():id(++nr) {
  97. this->colectiePiese = NULL;
  98. this->durataFunctionare = 0;
  99. this->nrPiese = 0;
  100. }
  101. //constructor cu toti param
  102. MijlocFix(int id, int durataFunctionare, Piesa* colectiePiese, int nrPiese):id(id) {
  103. this->colectiePiese = new Piesa[nrPiese];
  104.  
  105. for (int i = 0; i < nrPiese; i++) this->colectiePiese[i] = colectiePiese[i];
  106.  
  107. this->durataFunctionare = durataFunctionare;
  108. this->nrPiese = nrPiese;
  109. }
  110. //constructor copiere
  111. MijlocFix(MijlocFix& m):id(m.id) {
  112. this->colectiePiese = new Piesa[nrPiese];
  113. for (int i = 0; i < nrPiese; i++) this->colectiePiese[i] = colectiePiese[i];
  114. this->durataFunctionare = m.durataFunctionare;
  115. this->nrPiese = m.nrPiese;
  116. }
  117.  
  118. //operator =
  119. MijlocFix& operator = (MijlocFix& m) {
  120. this->colectiePiese = m.colectiePiese;
  121. this->durataFunctionare = m.durataFunctionare;
  122. this->nrPiese = m.nrPiese;
  123. }
  124. //operator <<
  125. friend ostream& operator <<(ostream& out,const MijlocFix& m);
  126. //destructor
  127. ~MijlocFix() {
  128. if (this -> colectiePiese != NULL) delete[] this->colectiePiese;
  129. }
  130.  
  131.  
  132. //+=
  133. MijlocFix& operator += (const Piesa& p) {
  134. Piesa* aux = new Piesa[this->nrPiese];
  135. for (int i = 0; i < this->nrPiese; i++) aux[i] = this->colectiePiese[i];
  136.  
  137. this->nrPiese++;
  138. delete[] this->colectiePiese;
  139. this->colectiePiese = new Piesa[nrPiese];
  140.  
  141. for (int i = 0; i < this->nrPiese-1; i++) colectiePiese[i] = aux[i];
  142.  
  143. this->colectiePiese[nrPiese] = p;
  144.  
  145. return *this;
  146. }
  147.  
  148.  
  149. //cast float
  150. operator float() {
  151. cout << "asd";
  152. float total = 0;
  153. for (int i = 0; i < this->nrPiese; i++) total += this->colectiePiese[i].getValoare();
  154.  
  155. return total;
  156. }
  157.  
  158.  
  159.  
  160.  
  161. };
  162.  
  163. ostream& operator <<(ostream& out,const MijlocFix& m) {
  164. out <<"Durata de Functionare: "<< m.durataFunctionare;
  165. out << endl << "NrPiese: " << m.nrPiese << endl;
  166.  
  167. for (int i = 0; i < m.nrPiese; i++)
  168. {
  169. out << m.colectiePiese[i];
  170. }
  171.  
  172. return out;
  173. }
  174.  
  175. void main()
  176. {
  177. Piesa p1;
  178. Piesa p2("Piesa2", 20.4f);
  179. Piesa p3 = p2;
  180. p3.setDenumire("Piesa3");
  181. p3.setValoare(35.5f); //de adaugat validari
  182. cout << p3;
  183.  
  184. Piesa piese[] = { p1,p2,p3 };
  185. MijlocFix mf1(12, 5, piese, 3);//cod,durata, piese,nrPiese
  186.  
  187. Piesa p4("Piesa4", 12.0f);
  188. mf1 += p4;
  189.  
  190. cout << "Valoarea totala a pieselor unui mijloc fix este: " << (float)mf1 << endl;
  191.  
  192. //Mesajul afisat la generarea exceptiei este: �Index out of range!�
  193. /*try {
  194. cout << mf1[6];
  195. mf1[0] = p4;
  196. cout << mf1[0];
  197. }
  198. catch (exception ex) {
  199. cout << ex.what() << endl;
  200. }*/
  201.  
  202. //Sa se construiasca clasa PiesaSchimb, derivata public din clasa Piesa,
  203. //care contine atributul an inlocuire (int).
  204.  
  205. /*PiesaSchimb ps1("PiesaS1", 10.0f, 2013);
  206. PiesaSchimb ps2("PiesaS2", 50.0f, 2013);
  207. Piesa* pp = &ps1;
  208. cout << "Valoarea unei piese de schimb este: " << pp->GetValoare() << endl;
  209. pp = &p1;
  210. cout << "Valoarea unei piese este: " << pp->GetValoare() << endl;*/
  211.  
  212. //vector<MijlocFix*> mijloaceFixe;
  213. //Sa se declare folosind o colectie de elemente de tip pointer la MijlocFix
  214. //utilizand clasa STL vector.
  215. //Sa se adauge elementele mf1 si mf2 in colectie si, utilizand un iterator, sa se
  216. //parcurga colectia cu afisarea la consola a fiecarui obiect.
  217.  
  218.  
  219. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement