Advertisement
Guest User

Untitled

a guest
Nov 19th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.88 KB | None | 0 0
  1. #include<iostream>
  2.  
  3. using namespace std;
  4. char NO_VALUE_AVAILABLE[4] = "NAN";
  5.  
  6. class Jurnal
  7. {
  8. private:
  9. char* denumire;
  10. int nr_numere;
  11. int* articole_pe_nr;
  12. const int ISSN;
  13. float pret;
  14. public:
  15. Jurnal();
  16. Jurnal(char* v_denumire);
  17. Jurnal(char* v_denumire, int v_nr_numere, int* v_articole_pe_nr, float v_pret);
  18. ~Jurnal();
  19. Jurnal(const Jurnal& jurnal);
  20. Jurnal& operator = (const Jurnal& jurnal);
  21. friend ostream& operator <<(ostream& out, Jurnal jurnal);
  22. friend istream& operator >> (istream & in, Jurnal& jurnal);
  23. //setteri si getteri pt denumire si issn
  24. void setDenumire(char* v_denumire);
  25. char* getDenumire();
  26. };
  27.  
  28.  
  29. int main()
  30. {
  31. Jurnal j1;
  32. cout << j1;
  33.  
  34. Jurnal j2("Jurnal");
  35. cout << j2;
  36.  
  37. int jurnal1[3] = { 1,2, 3 };
  38. Jurnal j3("Jurnal", 3, jurnal1, 25);
  39. cout << j3;
  40.  
  41. Jurnal j4 = j3;
  42. cout << j4;
  43.  
  44. return 0;
  45.  
  46. }
  47. Jurnal::Jurnal() :ISSN(Jurnal::nr_numere++)
  48. {
  49. this->denumire = new char[strlen("Denumire") + 1];
  50. strcpy(this->denumire, "Denumire");
  51. this->nr_numere = 1;
  52. this->articole_pe_nr = new int[this->nr_numere];
  53. for (int i = 0; i <this->nr_numere; i++)
  54. this->articole_pe_nr[i] = 0;
  55. this->pret = 0.0;
  56. }
  57. Jurnal::Jurnal(char* v_denumire) :ISSN(Jurnal::nr_numere++)
  58. {
  59. if (this->denumire == NULL)
  60. {
  61. this->denumire = new char[strlen(NO_VALUE_AVAILABLE)];
  62. strcpy(this->denumire, NO_VALUE_AVAILABLE);
  63. }
  64. else
  65. {
  66. this->denumire = new char[strlen(v_denumire) + 1];
  67. strcpy(this->denumire, v_denumire);
  68. }
  69. this->nr_numere = 0;
  70. this->articole_pe_nr = new int[this->nr_numere];
  71. for (int i = 0; i < this->nr_numere; i++)
  72. this->articole_pe_nr[i] = 0;
  73. this->pret = 0.0;
  74.  
  75. }
  76. Jurnal::Jurnal(char* v_denumire, int v_nr_numere, int* v_articole_pe_nr, float v_pret) :ISSN(Jurnal::nr_numere++)
  77. {
  78. if (v_denumire == NULL)
  79. {
  80. this->denumire = new char[strlen(NO_VALUE_AVAILABLE) + 1];
  81. strcpy(this->denumire, NO_VALUE_AVAILABLE);
  82. }
  83. else
  84. {
  85. this->denumire = new char[strlen(v_denumire) + 1];
  86. strcpy(this->denumire, v_denumire);
  87. }
  88. if (v_nr_numere < 0)
  89. this->nr_numere = 0;
  90. else
  91. this->nr_numere = v_nr_numere;
  92.  
  93. if (v_articole_pe_nr == NULL)
  94. {
  95. this->articole_pe_nr = new int[this->nr_numere];
  96. for (int i = 0; i < this->nr_numere; i++)
  97. this->articole_pe_nr[i] = 0;
  98. }
  99. else
  100. {
  101. this->articole_pe_nr = new int[this->nr_numere];
  102. for (int i = 0; i < this->nr_numere; i++)
  103. {
  104. if (v_articole_pe_nr[i] < 0)
  105. this->articole_pe_nr[i] = 0;
  106. else
  107. this->articole_pe_nr[i] = v_articole_pe_nr[i];
  108. }
  109. }
  110. if (v_pret < 0)
  111. this->pret = 0;
  112. else
  113. this->pret = v_pret;
  114. }
  115. Jurnal::Jurnal(const Jurnal& jurnal) :ISSN(jurnal.ISSN)
  116. {
  117. this->denumire = new char[strlen(jurnal.denumire) + 1];
  118. strcpy(this->denumire, jurnal.denumire);
  119. this->nr_numere = jurnal.nr_numere;
  120. this->articole_pe_nr = new int[this->nr_numere];
  121. for (int i = 0; i < this->nr_numere; i++)
  122. this->articole_pe_nr[i] = jurnal.articole_pe_nr[i];
  123. this->pret = jurnal.pret;
  124. }
  125. Jurnal& Jurnal:: operator=(const Jurnal& jurnal)
  126. {
  127. if (jurnal.denumire != NULL)
  128. delete[] jurnal.denumire;
  129. this->denumire = new char[strlen(jurnal.denumire) + 1];
  130. strcpy(this->denumire, jurnal.denumire);
  131. this->nr_numere = jurnal.nr_numere;
  132. this->articole_pe_nr = new int[this->nr_numere];
  133. if (jurnal.articole_pe_nr != NULL)
  134. delete[] jurnal.articole_pe_nr;
  135. for (int i = 0; i < this->nr_numere; i++)
  136. this->articole_pe_nr[i] = jurnal.articole_pe_nr[i];
  137. this->pret = jurnal.pret;
  138.  
  139. return *this;
  140. }
  141.  
  142.  
  143. Jurnal :: ~Jurnal()
  144. {
  145. if (this->denumire != NULL)
  146. delete[] this->denumire;
  147. if (this->articole_pe_nr != NULL)
  148. delete[] this->articole_pe_nr;
  149. cout << "Apel destructor.";
  150. }
  151.  
  152. ostream& operator << (ostream& out, Jurnal jurnal)
  153. {
  154. out << "Afisare date jurnal: " << endl;
  155.  
  156. out << "Denumire: " << jurnal.denumire << endl;
  157. out << "Nr. de numere:" << jurnal.nr_numere << endl;
  158. out << "Articole pe numar: " << endl;
  159. for (int i = 0; i < jurnal.nr_numere; i++) {
  160. cout << "Articolul " << i << ": " << jurnal.articole_pe_nr[i] << endl;
  161. }
  162. out << "Pret: " << jurnal.pret << endl;
  163. return out;
  164. }
  165. istream& operator >> (istream& in, Jurnal& jurnal)
  166. {
  167. cout << "Denumire: ";
  168. char aux[50];
  169. in.getline(aux, 50);
  170. if (jurnal.denumire != NULL)
  171. delete[] jurnal.denumire;
  172. jurnal.denumire = new char[strlen(aux) + 1];
  173. strcpy(jurnal.denumire, aux);
  174.  
  175. cout << "Nr de numere: ";
  176. int v_nr_numere;
  177. in >> v_nr_numere;
  178. if (v_nr_numere < 0)
  179. jurnal.nr_numere = 0;
  180. else
  181. jurnal.nr_numere = v_nr_numere;
  182. return in;
  183. }
  184. void Jurnal::setDenumire(char* v_denumire)
  185. {
  186. if (this->denumire != NULL)
  187. delete[] this->denumire;
  188. if (v_denumire == NULL)
  189. {
  190. this->denumire = new char[strlen(NO_VALUE_AVAILABLE) + 1];
  191. strcpy(this->denumire, NO_VALUE_AVAILABLE);
  192. }
  193. else
  194. {
  195. this->denumire = new char[strlen(v_denumire) + 1];
  196. strcpy(this->denumire, v_denumire);
  197. }
  198. }
  199. char* Jurnal::getDenumire()
  200. {
  201. return this->denumire;
  202. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement