Advertisement
Guest User

Untitled

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