metalni

OOP Labs 4 Zadaca 2

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