Advertisement
JStefan

[Laboratoriski] DVD

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