Verica

ФИЛМ 2

Apr 4th, 2019
388
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.71 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4.  
  5. enum zanr {action, comedy, drama};
  6.  
  7. class Film
  8. {
  9. private:
  10. char *filmName;
  11. int filmSize;
  12. zanr z;
  13. public:
  14. Film(const char *filmName = " ", const int filmSize = 0, const zanr z = zanr(0))
  15. {
  16. this->filmName = new char[strlen(filmName)+1];
  17. strcpy(this->filmName, filmName);
  18. this->filmSize = filmSize;
  19. this->z = z;
  20. }
  21. Film(const Film &r)
  22. {
  23. filmName = new char[strlen(r.filmName)+1];
  24. strcpy(filmName, r.filmName);
  25. filmSize = r.filmSize;
  26. z = r.z;
  27. }
  28. Film &operator=(const Film &r)
  29. {
  30. if(this != &r)
  31. {
  32. delete [] filmName;
  33. filmName = new char[strlen(r.filmName)+1];
  34. strcpy(filmName, r.filmName);
  35. filmSize = r.filmSize;
  36. z = r.z;
  37. }
  38. return *this;
  39. }
  40. ~Film()
  41. {
  42. delete [] filmName;
  43. }
  44. void pecati()
  45. {
  46. cout<< filmSize << "MB-" << "\"" << filmName << "\"" << endl;
  47. }
  48. const int getFilmSize()
  49. {
  50. return filmSize;
  51. }
  52. const zanr getGenre()
  53. {
  54. return z;
  55. }
  56.  
  57. };
  58.  
  59. class DVD
  60. {
  61. private:
  62. Film f[5];
  63. int filmsRecorded, capacity;
  64. public:
  65. DVD(int capacity = 0)
  66. {
  67. this->capacity = capacity;
  68. filmsRecorded = 0;
  69. }
  70. ~DVD() {}
  71. void dodadiFilm(Film f)
  72. {
  73. if(filmsRecorded < 5)
  74. {
  75. int testCapacity = 0;
  76. for(int i=0; i<filmsRecorded; i++)
  77. {
  78. testCapacity += this->f[i].getFilmSize();
  79. }
  80. if((testCapacity + f.getFilmSize()) <= capacity)
  81. {
  82. this->f[filmsRecorded] = f;
  83. filmsRecorded++;
  84. }
  85. }
  86. }
  87. void pecatiFilmoviDrugZanr(const zanr z)
  88. {
  89. for(int i = 0; i < filmsRecorded; i++)
  90. {
  91. if(f[i].getGenre() != z)
  92. {
  93. f[i].pecati();
  94. }
  95. }
  96. }
  97. int getBroj()
  98. {
  99. return filmsRecorded;
  100. }
  101. Film getFilm(int i)
  102. {
  103. return f[i];
  104. }
  105. };
  106.  
  107. int main() {
  108. // se testira zadacata modularno
  109. int testCase;
  110. cin >> testCase;
  111. int n, memorija, kojzanr;
  112. char ime[50];
  113. if(testCase == 1)
  114. {
  115. cout << "===== Testiranje na klasata Film ======" << endl;
  116. cin >> ime;
  117. cin >> memorija;
  118. cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  119. Film f(ime,memorija,(zanr)kojzanr);
  120. f.pecati();
  121. } else if(testCase == 2)
  122. {
  123. cout << "===== Testiranje na klasata DVD ======" << endl;
  124. DVD omileno(50);
  125. cin>>n;
  126. for (int i=0; i<n; i++)
  127. {
  128. cin >> ime;
  129. cin >> memorija;
  130. cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  131. Film f(ime,memorija,(zanr)kojzanr);
  132. omileno.dodadiFilm(f);
  133. }
  134. for (int i=0; i<n; i++)
  135. (omileno.getFilm(i)).pecati();
  136. } else if(testCase == 3)
  137. {
  138. cout << "===== Testiranje na metodot dodadiFilm() od klasata DVD ======" << endl;
  139. DVD omileno(50);
  140. cin>>n;
  141. for (int i=0; i<n; i++)
  142. {
  143. cin >> ime;
  144. cin >> memorija;
  145. cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  146. Film f(ime,memorija,(zanr)kojzanr);
  147. omileno.dodadiFilm(f);
  148. }
  149. for (int i=0; i<omileno.getBroj(); i++)
  150. (omileno.getFilm(i)).pecati();
  151. } else if(testCase == 4)
  152. {
  153. cout << "===== Testiranje na metodot pecatiFilmoviDrugZanr() od klasata DVD ======" << endl;
  154. DVD omileno(50);
  155. cin>>n;
  156. for (int i=0; i<n; i++)
  157. {
  158. cin >> ime;
  159. cin >> memorija;
  160. cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  161. Film f(ime,memorija,(zanr)kojzanr);
  162. omileno.dodadiFilm(f);
  163. }
  164. cin>>kojzanr;
  165. omileno.pecatiFilmoviDrugZanr((zanr)kojzanr);
  166.  
  167. } else if(testCase == 5)
  168. {
  169. cout << "===== Testiranje na metodot pecatiFilmoviDrugZanr() od klasata DVD ======" << endl;
  170. DVD omileno(50);
  171. cin>>n;
  172. for (int i=0; i<n; i++)
  173. {
  174. cin >> ime;
  175. cin >> memorija;
  176. cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  177. Film f(ime,memorija,(zanr)kojzanr);
  178. omileno.dodadiFilm(f);
  179. }
  180. cin>>kojzanr;
  181. omileno.pecatiFilmoviDrugZanr((zanr)kojzanr);
  182. }
  183. return 0;
  184. }
Advertisement
Add Comment
Please, Sign In to add comment