Advertisement
Mitrezzz

DVD (дополнета)

Mar 25th, 2018
851
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.39 KB | None | 0 0
  1. DVD (дополнета) Problem 2 (0 / 0)
  2. Да се дефинира класата Film во која се чуваат информации за:
  3.  
  4. име на филмот (динамички алоцирано поле од знаци)
  5. мемориската зафатнина на филмот изразена во MB
  6. жанр на филмот кој може да биде: акција, комедија или драма (енумерација zanr)
  7. Да се обезбедат сите потребни методи за класата за правилно функционирање на програмата.
  8.  
  9. Дополнително за оваа класа да се дефинира функцијата:
  10.  
  11. pecati() - функција во која ќе се печатат одделени со цртичка(-): мемориска зафатнина на филмот со постфикс MB и името на филмот во наводници.
  12. Да се креира класата DVD во која се чуваат информации за :
  13.  
  14. низа од филмови снимени на DVD-то (Поле од најмногу 5 објекти од класата Film )
  15. број на филмови снимени на DVD-то
  16. меморискиот капацитет на DVD-то (во MB)
  17. Да се обезбедат сите потребни методи за класата за правилно функционирање на програмата.
  18.  
  19. Дополнително за оваа класа да се дефинираат методите:
  20.  
  21. dodadiFilm (Film f) - со кој се додава филмот f на DVDто, но само ако има доволно преостанато место (земајќи го предвид меморискиот капацитет на DVD-то и мемориската зафатнина на снимените филмови) и притоа да има помалку од 5 филмови на DVD-то.
  22. pecatiFilmoviDrugZanr(zanr z) – со кој се печатат информациите за сите филмови кои НЕ се од жанрот zanr (акција, комедија или драма).
  23. (дополнително барање):float procentNaMemorijaOdZanr(zanr z)- со кој се пресметува процентот на меморијата која ја зафаќаат филмовите од жанр z на DVD-то.
  24.  
  25. Sample input
  26. 1
  27. Terminator 20 0
  28.  
  29. Sample output
  30. ===== Testiranje na klasata Film ======
  31. 20MB-"Terminator"
  32.  
  33. #include<iostream>
  34. #include<cstring>
  35.  
  36. using namespace std;
  37.  
  38. enum zanr {
  39.     akcija, komedija, drama
  40. };
  41.  
  42. class Film {
  43.     private:
  44.     char * ime;
  45.     int memorija;
  46.     zanr zanrFilm;
  47.    
  48.     void copy(const Film &f){
  49.         this->ime = new char [strlen(f.ime)+1];
  50.         strcpy(this->ime,f.ime);
  51.         this->memorija=f.memorija;
  52.         this->zanrFilm=f.zanrFilm;
  53.     }
  54.    
  55.     public:
  56.     Film(char * ime = "", int memorija=0, zanr zanrFilm = akcija){
  57.         this->ime = new char [strlen(ime)+1];
  58.         strcpy(this->ime,ime);
  59.         this->memorija=memorija;
  60.         this->zanrFilm=zanrFilm;
  61.     }
  62.    
  63.     Film(const Film &f){
  64.         copy(f);
  65.     }
  66.    
  67.     ~Film() {
  68.         delete ime;
  69.     }
  70.    
  71.     Film &operator = (const Film &f){
  72.         if (this!=&f){
  73.             delete ime;
  74.             copy(f);
  75.         }
  76.         return *this;
  77.     }
  78.    
  79.     void pecati() {
  80.         cout<<memorija<<"MB-"<<"\""<<ime<<"\""<<endl;
  81.     }
  82.    
  83.     int getMemorija() {
  84.         return memorija;
  85.     }
  86.    
  87.     zanr getZhanr() {
  88.         return zanrFilm;
  89.     }
  90.    
  91.    
  92. };
  93.  
  94. class DVD {
  95.     private:
  96.     Film filmovi[5];
  97.     int broj;
  98.     int kapacitet;
  99.     int momentalno;
  100.    
  101.     public:
  102.     DVD(int kapacitet){
  103.         this->kapacitet=kapacitet;
  104.         broj=0;
  105.         momentalno=0;
  106.     }
  107.    
  108.     void dodadiFilm(Film f) {
  109.         if (momentalno+f.getMemorija()<=kapacitet && broj<5){
  110.             filmovi[broj++]=f;
  111.             momentalno+=f.getMemorija();
  112.         }
  113.     }
  114.    
  115.     void pecatiFilmoviDrugZanr(const zanr r){
  116.         for (int i=0;i<broj;i++){
  117.            // cout<<filmovi[i].pecati()<<" "<<r<<" "<<
  118.             if (filmovi[i].getZhanr()!=r)
  119.                 filmovi[i].pecati();
  120.         }
  121.     }
  122.    
  123.     int getBroj() {
  124.         return broj;
  125.     }
  126.    
  127.     Film getFilm (int i){
  128.         return filmovi[i];
  129.     }
  130.    
  131.     float procentNaMemorijaOdZanr(zanr r){
  132.         float sum = 0.0;
  133.         for (int i=0;i<broj;i++)
  134.             if (filmovi[i].getZhanr()==r)
  135.                 sum+=filmovi[i].getMemorija();
  136.            
  137.         return sum / momentalno * 100.0;
  138.     }
  139. };
  140.  
  141.  
  142. int main() {
  143.     // se testira zadacata modularno
  144.     int testCase;
  145.     cin >> testCase;
  146.  
  147.     int n, memorija, kojzanr;
  148.     char ime[50];
  149.  
  150.     if (testCase == 1) {
  151.         cout << "===== Testiranje na klasata Film ======" << endl;
  152.         cin >> ime;
  153.         cin >> memorija;
  154.         cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  155.         Film f(ime, memorija, (zanr) kojzanr);
  156.         f.pecati();
  157.     } else if (testCase == 2) {
  158.         cout << "===== Testiranje na klasata DVD ======" << endl;
  159.         DVD omileno(50);
  160.         cin >> n;
  161.         for (int i = 0; i < n; i++) {
  162.             cin >> ime;
  163.             cin >> memorija;
  164.             cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  165.             Film f(ime, memorija, (zanr) kojzanr);
  166.             omileno.dodadiFilm(f);
  167.         }
  168.         for (int i = 0; i < n; i++)
  169.             (omileno.getFilm(i)).pecati();
  170.     } else if (testCase == 3) {
  171.         cout << "===== Testiranje na metodot dodadiFilm() od klasata DVD ======" << endl;
  172.         DVD omileno(50);
  173.         cin >> n;
  174.         for (int i = 0; i < n; i++) {
  175.             cin >> ime;
  176.             cin >> memorija;
  177.             cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  178.             Film f(ime, memorija, (zanr) kojzanr);
  179.             omileno.dodadiFilm(f);
  180.         }
  181.         for (int i = 0; i < omileno.getBroj(); i++)
  182.             (omileno.getFilm(i)).pecati();
  183.     } else if (testCase == 4) {
  184.         cout << "===== Testiranje na metodot pecatiFilmoviDrugZanr() od klasata DVD ======" << endl;
  185.         DVD omileno(50);
  186.         cin >> n;
  187.         for (int i = 0; i < n; i++) {
  188.             cin >> ime;
  189.             cin >> memorija;
  190.             cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  191.             Film f(ime, memorija, (zanr) kojzanr);
  192.             omileno.dodadiFilm(f);
  193.         }
  194.         cin >> kojzanr;
  195.         omileno.pecatiFilmoviDrugZanr((zanr) kojzanr);
  196.  
  197.     } else if (testCase == 5) {
  198.         cout << "===== Testiranje na metodot pecatiFilmoviDrugZanr() od klasata DVD ======" << endl;
  199.         DVD omileno(50);
  200.         cin >> n;
  201.         for (int i = 0; i < n; i++) {
  202.             cin >> ime;
  203.             cin >> memorija;
  204.             cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  205.             Film f(ime, memorija, (zanr) kojzanr);
  206.             omileno.dodadiFilm(f);
  207.         }
  208.         cin >> kojzanr;
  209.         omileno.pecatiFilmoviDrugZanr((zanr) kojzanr);
  210.  
  211.     } else if (testCase == 6){
  212.         cout<<"===== Testirawe na metodot procentNaMemorijaOdZanr() od klasata DVD =====" <<endl;
  213.         DVD omileno(40);
  214.         cin >> n;
  215.         for (int i = 0; i < n; i++) {
  216.             cin >> ime;
  217.             cin >> memorija;
  218.             cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
  219.             Film f(ime, memorija, (zanr) kojzanr);
  220.             omileno.dodadiFilm(f);
  221.         }
  222.         cin >> kojzanr;
  223.         cout<<"Procent na filmovi od dadeniot zanr iznesuva: "<<omileno.procentNaMemorijaOdZanr((zanr) kojzanr)<<"%\n";
  224.        
  225.     }
  226.  
  227.     return 0;
  228. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement