Advertisement
Guest User

Untitled

a guest
Jan 17th, 2020
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.99 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. enum zanr{AKCIJA,KOMEDIJA,DRAMA};
  6.  
  7. class Film
  8. {
  9. private:
  10. char *ime;
  11. int memorija;
  12. zanr z;
  13. public:
  14. Film()
  15. {
  16. ime = new char[0];
  17. memorija=0;
  18. z=AKCIJA;
  19. }
  20. Film(char *ime,int memorija,zanr z)
  21. {
  22. this->ime = new char [strlen(ime)+1];
  23. strcpy(this->ime,ime);
  24. this->memorija = memorija;
  25. this->z = z;
  26. }
  27. Film(Film &f)
  28. {
  29. this->ime = new char [strlen(f.ime)+1];
  30. strcpy(this->ime,f.ime);
  31. this->memorija = f.memorija;
  32. this->z = f.z;
  33. }
  34.  
  35. Film& operator = (Film &f)
  36. {
  37. if(this!=&f)
  38. {
  39. delete []ime;
  40. this->ime = new char [strlen(f.ime)+1];
  41. strcpy(this->ime,f.ime);
  42. this->memorija = f.memorija;
  43. this->z = f.z;
  44. }
  45. return *this;
  46. }
  47. zanr getZanr()
  48. {
  49. return z;
  50. }
  51. int getMemorija()
  52. {
  53. return memorija;
  54. }
  55. void pecati()
  56. {
  57. cout<<memorija<<"MB-\""<<ime<<"\""<<endl;
  58. }
  59. ~Film()
  60. {
  61. delete []ime;
  62. }
  63. };
  64.  
  65. class DVD
  66. {
  67. private:
  68. Film f[5];
  69. int brFilmovi;
  70. int kapacitet;
  71. int currentSize;
  72. public:
  73. DVD()
  74. {
  75. brFilmovi=0;
  76. //f = new Film[brFilmovi];
  77. kapacitet=0;
  78. currentSize=0;
  79. }
  80. DVD(int kapacitet)
  81. {
  82. this->kapacitet = kapacitet;
  83. brFilmovi=0;
  84. /*
  85. f = new Film[brFilmovi];
  86. for(int i=0;i<brFilmovi;i++)
  87. {
  88. this->f[i] = f[i];
  89. }
  90. */
  91. kapacitet=0;
  92. currentSize=0;
  93. }
  94. int getBroj()
  95. {
  96. return brFilmovi;
  97. }
  98. Film& getFilm(int i)
  99. {
  100. return f[i];
  101. }
  102. void dodadiFilm(Film &nov)
  103. {
  104. if(kapacitet>=currentSize + nov.getMemorija())
  105. {
  106. if(brFilmovi<5)
  107. {
  108. f[brFilmovi] = nov;
  109. brFilmovi++;
  110. currentSize+=nov.getMemorija();
  111. }
  112. }
  113. }
  114.  
  115. /*
  116.  
  117. void dodadiFilm(Film &nov)
  118. {
  119. if(kapacitet>currentSize + nov.getMemorija())
  120. {
  121. Film *temp = new Film[brFilmovi+1];
  122. for(int i=0;i<brFilmovi;i++)
  123. {
  124. temp[i] = f[i];
  125. }
  126. temp[brFilmovi] = nov;
  127.  
  128. delete []f;
  129. f = temp;
  130. brFilmovi++;
  131. }
  132. }
  133.  
  134. */
  135.  
  136.  
  137. void pecatiFilmoviDrugZanr(zanr z)
  138. {
  139. for(int i=0;i<brFilmovi;i++)
  140. {
  141. if(f[i].getZanr()!=z)
  142. {
  143. f[i].pecati();
  144. }
  145. }
  146. }
  147. float procentNaMemorijaOdZanr(zanr z)
  148. {
  149. int size=0;
  150. for(int i=0;i<brFilmovi;i++)
  151. {
  152. if(f[i].getZanr()==z)
  153. {
  154. size+=f[i].getMemorija();
  155. }
  156. }
  157. return (float)size*100/currentSize;
  158. }
  159.  
  160. };
  161. int main() {
  162. // se testira zadacata modularno
  163. int testCase;
  164. cin >> testCase;
  165.  
  166. int n, memorija, kojzanr;
  167. char ime[50];
  168.  
  169. if (testCase == 1) {
  170. cout << "===== Testiranje na klasata Film ======" << endl;
  171. cin >> ime;
  172. cin >> memorija;
  173. cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  174. Film f(ime, memorija, (zanr) kojzanr);
  175. f.pecati();
  176. } else if (testCase == 2) {
  177. cout << "===== Testiranje na klasata DVD ======" << endl;
  178. DVD omileno(50);
  179. cin >> n;
  180. for (int i = 0; i < n; i++) {
  181. cin >> ime;
  182. cin >> memorija;
  183. cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  184. Film f(ime, memorija, (zanr) kojzanr);
  185. omileno.dodadiFilm(f);
  186. }
  187. for (int i = 0; i < n; i++)
  188. (omileno.getFilm(i)).pecati();
  189. } else if (testCase == 3) {
  190. cout << "===== Testiranje na metodot dodadiFilm() od klasata DVD ======" << endl;
  191. DVD omileno(50);
  192. cin >> n;
  193. for (int i = 0; i < n; i++) {
  194. cin >> ime;
  195. cin >> memorija;
  196. cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  197. Film f(ime, memorija, (zanr) kojzanr);
  198. omileno.dodadiFilm(f);
  199. }
  200. for (int i = 0; i < omileno.getBroj(); i++)
  201. (omileno.getFilm(i)).pecati();
  202. } else if (testCase == 4) {
  203. cout << "===== Testiranje na metodot pecatiFilmoviDrugZanr() od klasata DVD ======" << endl;
  204. DVD omileno(50);
  205. cin >> n;
  206. for (int i = 0; i < n; i++) {
  207. cin >> ime;
  208. cin >> memorija;
  209. cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  210. Film f(ime, memorija, (zanr) kojzanr);
  211. omileno.dodadiFilm(f);
  212. }
  213. cin >> kojzanr;
  214. omileno.pecatiFilmoviDrugZanr((zanr) kojzanr);
  215.  
  216. } else if (testCase == 5) {
  217. cout << "===== Testiranje na metodot pecatiFilmoviDrugZanr() od klasata DVD ======" << endl;
  218. DVD omileno(50);
  219. cin >> n;
  220. for (int i = 0; i < n; i++) {
  221. cin >> ime;
  222. cin >> memorija;
  223. cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  224. Film f(ime, memorija, (zanr) kojzanr);
  225. omileno.dodadiFilm(f);
  226. }
  227. cin >> kojzanr;
  228. omileno.pecatiFilmoviDrugZanr((zanr) kojzanr);
  229.  
  230. } else if (testCase == 6){
  231. cout<<"===== Testirawe na metodot procentNaMemorijaOdZanr() od klasata DVD =====" <<endl;
  232. DVD omileno(40);
  233. cin >> n;
  234. for (int i = 0; i < n; i++) {
  235. cin >> ime;
  236. cin >> memorija;
  237. cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  238. Film f(ime, memorija, (zanr) kojzanr);
  239. omileno.dodadiFilm(f);
  240. }
  241. cin >> kojzanr;
  242. cout<<"Procent na filmovi od dadeniot zanr iznesuva: "<<omileno.procentNaMemorijaOdZanr((zanr) kojzanr)<<"%\n";
  243.  
  244. }
  245.  
  246. return 0;
  247. }
  248.  
  249. /*
  250. #include<iostream>
  251. #include<cstring>
  252.  
  253. using namespace std;
  254.  
  255. enum zanr {
  256. akcija, komedija, drama
  257. };
  258.  
  259. class Film {
  260. private:
  261. char * ime;
  262. int memorija;
  263. zanr zanrFilm;
  264.  
  265. void copy(const Film &f){
  266. this->ime = new char [strlen(f.ime)+1];
  267. strcpy(this->ime,f.ime);
  268. this->memorija=f.memorija;
  269. this->zanrFilm=f.zanrFilm;
  270. }
  271.  
  272. public:
  273. Film(char * ime = "", int memorija=0, zanr zanrFilm = akcija){
  274. this->ime = new char [strlen(ime)+1];
  275. strcpy(this->ime,ime);
  276. this->memorija=memorija;
  277. this->zanrFilm=zanrFilm;
  278. }
  279.  
  280. Film(const Film &f){
  281. copy(f);
  282. }
  283.  
  284. ~Film() {
  285. delete ime;
  286. }
  287.  
  288. Film &operator = (const Film &f){
  289. if (this!=&f){
  290. delete ime;
  291. copy(f);
  292. }
  293. return *this;
  294. }
  295.  
  296. void pecati() {
  297. cout<<memorija<<"MB-"<<"\""<<ime<<"\""<<endl;
  298. }
  299.  
  300. int getMemorija() {
  301. return memorija;
  302. }
  303.  
  304. zanr getZhanr() {
  305. return zanrFilm;
  306. }
  307.  
  308.  
  309. };
  310.  
  311. class DVD {
  312. private:
  313. Film filmovi[5];
  314. int broj;
  315. int kapacitet;
  316. int momentalno;
  317.  
  318. public:
  319. DVD(int kapacitet){
  320. this->kapacitet=kapacitet;
  321. broj=0;
  322. momentalno=0;
  323. }
  324.  
  325. void dodadiFilm(Film f) {
  326. if (momentalno+f.getMemorija()<=kapacitet&&broj<5){
  327. filmovi[broj++]=f;
  328. momentalno+=f.getMemorija();
  329. }
  330. }
  331.  
  332. void pecatiFilmoviDrugZanr(const zanr r){
  333. for (int i=0;i<broj;i++){
  334. // cout<<filmovi[i].pecati()<<" "<<r<<" "<<
  335. if (filmovi[i].getZhanr()!=r)
  336. filmovi[i].pecati();
  337. }
  338. }
  339.  
  340. int getBroj() {
  341. return broj;
  342. }
  343.  
  344. Film getFilm (int i){
  345. return filmovi[i];
  346. }
  347.  
  348. float procentNaMemorijaOdZanr(zanr r){
  349. float sum = 0.0;
  350. for (int i=0;i<broj;i++)
  351. if (filmovi[i].getZhanr()==r)
  352. sum+=filmovi[i].getMemorija();
  353.  
  354. return sum / momentalno * 100.0;
  355. }
  356. };
  357.  
  358.  
  359. int main() {
  360. // se testira zadacata modularno
  361. int testCase;
  362. cin >> testCase;
  363.  
  364. int n, memorija, kojzanr;
  365. char ime[50];
  366.  
  367. if (testCase == 1) {
  368. cout << "===== Testiranje na klasata Film ======" << endl;
  369. cin >> ime;
  370. cin >> memorija;
  371. cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  372. Film f(ime, memorija, (zanr) kojzanr);
  373. f.pecati();
  374. } else if (testCase == 2) {
  375. cout << "===== Testiranje na klasata DVD ======" << endl;
  376. DVD omileno(50);
  377. cin >> n;
  378. for (int i = 0; i < n; i++) {
  379. cin >> ime;
  380. cin >> memorija;
  381. cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  382. Film f(ime, memorija, (zanr) kojzanr);
  383. omileno.dodadiFilm(f);
  384. }
  385. for (int i = 0; i < n; i++)
  386. (omileno.getFilm(i)).pecati();
  387. } else if (testCase == 3) {
  388. cout << "===== Testiranje na metodot dodadiFilm() od klasata DVD ======" << endl;
  389. DVD omileno(50);
  390. cin >> n;
  391. for (int i = 0; i < n; i++) {
  392. cin >> ime;
  393. cin >> memorija;
  394. cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  395. Film f(ime, memorija, (zanr) kojzanr);
  396. omileno.dodadiFilm(f);
  397. }
  398. for (int i = 0; i < omileno.getBroj(); i++)
  399. (omileno.getFilm(i)).pecati();
  400. } else if (testCase == 4) {
  401. cout << "===== Testiranje na metodot pecatiFilmoviDrugZanr() od klasata DVD ======" << endl;
  402. DVD omileno(50);
  403. cin >> n;
  404. for (int i = 0; i < n; i++) {
  405. cin >> ime;
  406. cin >> memorija;
  407. cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  408. Film f(ime, memorija, (zanr) kojzanr);
  409. omileno.dodadiFilm(f);
  410. }
  411. cin >> kojzanr;
  412. omileno.pecatiFilmoviDrugZanr((zanr) kojzanr);
  413.  
  414. } else if (testCase == 5) {
  415. cout << "===== Testiranje na metodot pecatiFilmoviDrugZanr() od klasata DVD ======" << endl;
  416. DVD omileno(50);
  417. cin >> n;
  418. for (int i = 0; i < n; i++) {
  419. cin >> ime;
  420. cin >> memorija;
  421. cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  422. Film f(ime, memorija, (zanr) kojzanr);
  423. omileno.dodadiFilm(f);
  424. }
  425. cin >> kojzanr;
  426. omileno.pecatiFilmoviDrugZanr((zanr) kojzanr);
  427.  
  428. } else if (testCase == 6){
  429. cout<<"===== Testirawe na metodot procentNaMemorijaOdZanr() od klasata DVD =====" <<endl;
  430. DVD omileno(40);
  431. cin >> n;
  432. for (int i = 0; i < n; i++) {
  433. cin >> ime;
  434. cin >> memorija;
  435. cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  436. Film f(ime, memorija, (zanr) kojzanr);
  437. omileno.dodadiFilm(f);
  438. }
  439. cin >> kojzanr;
  440. cout<<"Procent na filmovi od dadeniot zanr iznesuva: "<<omileno.procentNaMemorijaOdZanr((zanr) kojzanr)<<"%\n";
  441.  
  442. }
  443.  
  444. return 0;
  445. }
  446. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement