prometheus800

ООП: CD

Apr 6th, 2022
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.50 KB | None | 0 0
  1. // CD Problem 2 (1 / 10)
  2.  
  3. #include <iostream>
  4. #include <string.h>
  5.  
  6. using namespace std;
  7.  
  8. enum tip {POP, RAP, ROK};
  9.  
  10. class Pesna{
  11.     private:
  12.         char ime[50];
  13.         int minuti;
  14.         tip zanr;
  15.     public:
  16.         Pesna(){}
  17.         Pesna(char x[50], int y, tip tip1){
  18.             strcpy(ime, x);
  19.             minuti = y;
  20.             zanr = tip1;
  21.         }
  22.     void pecati(){
  23.         cout <<"\""<<ime<<"\"-"<<minuti<<"min"<<endl;
  24.     }
  25.  
  26.     tip getZanr() {
  27.         return zanr;
  28.     }
  29.  
  30.     int getMinuti(){
  31.         return minuti;
  32.     }
  33. };
  34.  
  35.  
  36. class CD{
  37.     private:
  38.         Pesna *niza;
  39.         int brojNaPesni;
  40.         int maxVreme;
  41.         int vreme;
  42.     public:
  43.         CD(int maxVreme1){
  44.             brojNaPesni = 0;
  45.             maxVreme = maxVreme1;
  46.             vreme = 0;
  47.         }
  48.  
  49.     void dodadiPesna(Pesna p){
  50.         if(brojNaPesni >= 10){
  51.             return;
  52.         }
  53.         if((vreme + p.getMinuti()) > maxVreme) {
  54.             return;
  55.         }
  56.         niza[brojNaPesni] = p;
  57.         brojNaPesni++;
  58.         vreme += p.getMinuti();
  59.     }
  60.  
  61.     void pecatiPesniPoTip(tip zanr) {
  62.         for(int i = 0; i < brojNaPesni; i++){
  63.             Pesna p = niza[i];
  64.             if(p.getZanr() == zanr) {
  65.                 p.pecati();
  66.             }
  67.         }
  68.     }
  69.     Pesna getPesna(int i) {
  70.         return niza[i];
  71.     }
  72.     int getBroj() {
  73.         return brojNaPesni;
  74.     }
  75. };
  76.  
  77.  
  78. int main() {
  79.     // se testira zadacata modularno
  80.     int testCase;
  81.  
  82.     cin >> testCase;
  83.  
  84.     int n, minuti, kojtip;
  85.     char ime[50];
  86.  
  87.     if(testCase == 1) {
  88.         cout << "===== Testiranje na klasata Pesna ======" << endl;
  89.         cin >> ime;
  90.         cin >> minuti;
  91.         cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
  92.         Pesna p(ime,minuti,(tip)kojtip);
  93.         p.pecati();
  94.     } else if(testCase == 2) {
  95.         cout << "===== Testiranje na klasata CD ======" << endl;
  96.         CD omileno(20);
  97.         cin>>n;
  98.             for (int i=0;i<n;i++){
  99.                 cin >> ime;
  100.                 cin >> minuti;
  101.                 cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
  102.                 Pesna p(ime,minuti,(tip)kojtip);
  103.                 omileno.dodadiPesna(p);
  104.             }
  105.             for (int i=0; i<n; i++)
  106.                 (omileno.getPesna(i)).pecati();
  107.     }
  108.     else if(testCase == 3) {
  109.         cout << "===== Testiranje na metodot dodadiPesna() od klasata CD ======" << endl;
  110.         CD omileno(20);
  111.         cin>>n;
  112.             for (int i=0;i<n;i++){
  113.                 cin >> ime;
  114.                 cin >> minuti;
  115.                 cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
  116.                 Pesna p(ime,minuti,(tip)kojtip);
  117.                 omileno.dodadiPesna(p);
  118.             }
  119.             for (int i=0; i<omileno.getBroj(); i++)
  120.                 (omileno.getPesna(i)).pecati();
  121.     }
  122.     else if(testCase == 4) {
  123.         cout << "===== Testiranje na metodot pecatiPesniPoTip() od klasata CD ======" << endl;
  124.         CD omileno(20);
  125.         cin>>n;
  126.             for (int i=0;i<n;i++){
  127.                 cin >> ime;
  128.                 cin >> minuti;
  129.                 cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
  130.                 Pesna p(ime,minuti,(tip)kojtip);
  131.                 omileno.dodadiPesna(p);
  132.             }
  133.         cin>>kojtip;
  134.         omileno.pecatiPesniPoTip((tip)kojtip);
  135.  
  136.     }
  137.     else if(testCase == 5) {
  138.         cout << "===== Testiranje na metodot pecatiPesniPoTip() od klasata CD ======" << endl;
  139.         CD omileno(20);
  140.         cin>>n;
  141.             for (int i=0;i<n;i++){
  142.                 cin >> ime;
  143.                 cin >> minuti;
  144.                 cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
  145.                 Pesna p(ime,minuti,(tip)kojtip);
  146.                 omileno.dodadiPesna(p);
  147.             }
  148.         cin>>kojtip;
  149.         omileno.pecatiPesniPoTip((tip)kojtip);
  150.  
  151.     }
  152.  
  153. return 0;
  154. }
  155.  
Add Comment
Please, Sign In to add comment