Advertisement
LegoDrifter

CD

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