Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.97 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4. enum tip {pop,rap,rok};
  5. class Pesna {
  6.     char* ime;
  7.     int minuti;
  8.     tip kojtip;
  9. public:
  10.  
  11.     Pesna(char *ime="",int minuti=0,tip kojtip=pop) {
  12.         this->ime=new char[strlen(ime)+1];
  13.         strcpy(this->ime,ime);
  14.         this->minuti=minuti;
  15.         this->kojtip=kojtip;
  16.     }
  17.     Pesna(const Pesna &p) {
  18.         ime=new char[strlen(p.ime)+1];
  19.         strcpy(this->ime,p.ime);
  20.         this->minuti=p.minuti;
  21.         this->kojtip=p.kojtip;
  22.     }
  23.     Pesna &operator=(const Pesna &p) {
  24.         if(this!=&p) {
  25.             delete [] ime;
  26.             ime=new char[strlen(p.ime)+1];
  27.             strcpy(this->ime,p.ime);
  28.             this->minuti=p.minuti;
  29.             this->kojtip=p.kojtip;
  30.             return *this;
  31.         }
  32.         return *this;
  33.     }
  34.  
  35.     ~Pesna() {
  36.         delete [] ime;
  37.     }
  38.     int getMin() {
  39.         return minuti;
  40.     }
  41.     void pecati() {
  42.         cout<<"\""<<ime<<"\"-"<<minuti<<"min"<<endl;
  43.     }
  44.     tip getTip() {
  45.         return kojtip;
  46.     }
  47. };
  48.  
  49. class CD {
  50.     Pesna pesni[10];
  51.     int brPesni;
  52.     int maxmin;
  53. public:
  54.     CD() {};
  55.     CD(int maxmin) {
  56.  
  57.         this->maxmin=maxmin;
  58.         this->brPesni=0;
  59.        
  60.        
  61.  
  62.  
  63.  
  64.  
  65.     }
  66.     CD(Pesna *pesni,int brPesni=0,int maxmin=0) {
  67.         this->brPesni=brPesni;
  68.         this->maxmin=maxmin;
  69.         for(int i=0; i<brPesni; i++) {
  70.             this->pesni[i]=pesni[i];
  71.         }
  72.     }
  73.     CD(const CD &cd) {
  74.         this->brPesni=cd.brPesni;
  75.         this->maxmin=cd.maxmin;
  76.         for(int i=0; i<cd.brPesni; i++) {
  77.             pesni[i]=cd.pesni[i];
  78.         }
  79.     }
  80.     CD &operator=(const CD &cd) {
  81.         if(this!=&cd) {
  82.  
  83.             this->brPesni=cd.brPesni;
  84.             this->maxmin=cd.maxmin;
  85.             for(int i=0; i<cd.brPesni; i++) {
  86.                 this->pesni[i]=cd.pesni[i];
  87.             }
  88.             return *this;
  89.         }
  90.         return *this;
  91.  
  92.  
  93.  
  94.  
  95.     }
  96.     ~CD () {}
  97.  
  98.     void dodadiPesna(Pesna p) {
  99.         if(brPesni<10) {
  100.             int sum=0;
  101.             for(int i=0; i<brPesni; i++) {
  102.                 sum+=this->pesni[i].getMin();
  103.             }
  104.             if(sum+p.getMin()<maxmin) {
  105.                 this->pesni[brPesni]=p;
  106.                 brPesni++;
  107.             }
  108.         }
  109.     }
  110.     void pecatiPesniPoTip(tip t) {
  111.         for(int i=0; i<=brPesni; i++) {
  112.             if(pesni[i].getTip()==t) {
  113.                 pesni[i].pecati();
  114.             }
  115.         }
  116.     }
  117.     int getBroj() {
  118.         return brPesni;
  119.     }
  120.     Pesna getPesna(int i) {
  121.         return pesni[i];
  122.     }
  123.  
  124.  
  125.  
  126.  
  127. };
  128.  
  129.  
  130.  
  131. int main() {
  132.     // se testira zadacata modularno
  133.     int testCase;
  134.     cin >> testCase;
  135.  
  136.     int n, minuti, kojtip;
  137.     char ime[50];
  138.  
  139.     if(testCase == 1) {
  140.         cout << "===== Testiranje na klasata Pesna ======" << endl;
  141.         cin >> ime;
  142.         cin >> minuti;
  143.         cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
  144.         Pesna p(ime,minuti,(tip)kojtip);
  145.         p.pecati();
  146.     } else if(testCase == 2) {
  147.         cout << "===== Testiranje na klasata CD ======" << endl;
  148.         CD omileno(20);
  149.         cin>>n;
  150.         for (int i=0; i<n; i++) {
  151.             cin >> ime;
  152.             cin >> minuti;
  153.             cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
  154.             Pesna p(ime,minuti,(tip)kojtip);
  155.             omileno.dodadiPesna(p);
  156.         }
  157.         for (int i=0; i<n; i++)
  158.             (omileno.getPesna(i)).pecati();
  159.     } else if(testCase == 3) {
  160.         cout << "===== Testiranje na metodot dodadiPesna() od klasata CD ======" << endl;
  161.         CD omileno(20);
  162.         cin>>n;
  163.         for (int i=0; i<n; i++) {
  164.             cin >> ime;
  165.             cin >> minuti;
  166.             cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
  167.             Pesna p(ime,minuti,(tip)kojtip);
  168.             omileno.dodadiPesna(p);
  169.         }
  170.         for (int i=0; i<omileno.getBroj(); i++)
  171.             (omileno.getPesna(i)).pecati();
  172.     } else if(testCase == 4) {
  173.         cout << "===== Testiranje na metodot pecatiPesniPoTip() od klasata CD ======" << endl;
  174.         CD omileno(20);
  175.         cin>>n;
  176.         for (int i=0; i<n; i++) {
  177.             cin >> ime;
  178.             cin >> minuti;
  179.             cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
  180.             Pesna p(ime,minuti,(tip)kojtip);
  181.             omileno.dodadiPesna(p);
  182.         }
  183.         cin>>kojtip;
  184.         omileno.pecatiPesniPoTip((tip)kojtip);
  185.  
  186.     } else if(testCase == 5) {
  187.         cout << "===== Testiranje na metodot pecatiPesniPoTip() od klasata CD ======" << endl;
  188.         CD omileno(20);
  189.         cin>>n;
  190.         for (int i=0; i<n; i++) {
  191.             cin >> ime;
  192.             cin >> minuti;
  193.             cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
  194.             Pesna p(ime,minuti,(tip)kojtip);
  195.             omileno.dodadiPesna(p);
  196.         }
  197.         cin>>kojtip;
  198.         omileno.pecatiPesniPoTip((tip)kojtip);
  199.  
  200.     }
  201.  
  202.     return 0;
  203. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement