prometheus800

Задача 2 C++ Лаб 4/Lab 4

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