Crazy

Звучници

May 17th, 2017
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.81 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5.  
  6. // vashiot kod ovde
  7. class Speaker {
  8.     protected:
  9.     float moknost;
  10.     char model[101];
  11.     bool pojacalo;
  12.     float cena;
  13.    
  14.     public:
  15.     static int DDV;
  16.    
  17.     Speaker(float m, char *mo, bool p, float c)
  18.     {
  19.    
  20.         moknost=m;
  21.         strcpy(model,mo);
  22.         pojacalo=p;
  23.         cena=c;
  24.    
  25.     }
  26.    
  27.     char *getModel(){return model;}
  28.     bool getPojacalo(){return pojacalo;}
  29.    
  30.    
  31.     static void smeniDDV(int ddv){Speaker::DDV=ddv;}
  32.     static void vkupnoDDV(Speaker** s, int n){
  33.         int sum=0;
  34.         int vkupnoddv=0;
  35.        
  36.         for(int i=0;i<n;i++)
  37.         {
  38.         sum+=s[i]->presmetajCena();
  39.         }
  40.        
  41.         vkupnoddv=sum*DDV/100;
  42.        
  43.     cout<<"Vkupna cena: "<<sum<<endl;
  44.     cout<<"Vkupno DDV: "<<vkupnoddv<<endl;
  45.    
  46.    
  47.    
  48.     }
  49.    
  50.     virtual float presmetajCena(){return 0;}
  51.    
  52.     friend ostream &operator<<(ostream &out, Speaker &s)
  53.     {
  54.         out<<s.model<<" ";
  55.         if (s.pojacalo==true)
  56.             out<<"ima pojachalo ";
  57.         else
  58.             out<<"nema pojachalo ";
  59.        
  60.         out<<s.presmetajCena();
  61.        
  62.         return out;
  63.    
  64.    
  65.     }
  66.    
  67.     bool operator>(Speaker &s)
  68.     {
  69.         return (presmetajCena()>s.presmetajCena());
  70.    
  71.    
  72.     }
  73.    
  74.  
  75.  
  76. };
  77. int Speaker::DDV=18;
  78.  
  79. class TowerSpeaker : public Speaker{
  80.     private:
  81.     bool stolb;
  82.    
  83.     public:
  84.     TowerSpeaker(float m, char *mo, bool p, float c, bool s):Speaker(m,mo,p,c)
  85.     {
  86.     stolb=s;
  87.     }
  88.    
  89.     float presmetajCena(){
  90.         int a=0,b=0;
  91.        
  92.         if(pojacalo){a=cena*0.1;}
  93.         if(stolb){b=cena*0.05;}
  94.         return cena+a+b;
  95.    
  96.    
  97.     }
  98.  
  99.  
  100. };
  101.  
  102. class MonitorSpeaker: public Speaker{
  103.     private:
  104.     bool namena;
  105.    
  106.     public:
  107.     MonitorSpeaker(float m, char *mo, bool p, float c, bool n):Speaker(m,mo,p,c)
  108.     {
  109.     namena = n;
  110.     }
  111.    
  112.     float presmetajCena(){
  113.         int a=0,b=0;
  114.        
  115.         if(pojacalo){a=cena*0.1;}
  116.         if(namena){b=cena*0.15;}
  117.         return cena+a+b;
  118.    
  119.    
  120.     }
  121.  
  122.  
  123. };
  124.  
  125. void lowestPrice(Speaker** s, int n){
  126.    
  127.     int min= s[0]->presmetajCena();
  128.     int index;
  129.    
  130.     for(int i=0;i<n;i++)
  131.         if(min>s[i]->presmetajCena())
  132.     {
  133.         min=s[i]->presmetajCena();
  134.         index=i;
  135.  
  136.     }
  137.    
  138.     cout<<s[index]->getModel();
  139.     if(s[index]->getPojacalo())
  140.         cout<<" ima pojachalo ";
  141.     else
  142.         cout<<" nema pojachalo ";
  143.    
  144.     cout<<s[index]->presmetajCena();
  145.    
  146.  
  147.  
  148.  
  149.  
  150. }
  151.  
  152.  
  153.  
  154.  
  155. // zabraneto e menuvanje na main funkcijata
  156.  
  157.  
  158. int main() {
  159.     int testCase;
  160.     cin >> testCase;
  161.     float power;
  162.     char model[100];
  163.     bool amp;
  164.     float price;
  165.     bool fullSemi;
  166.     if(testCase == 1) {
  167.         cout << "===== TESTING CONSTRUCTORS ======" << endl;
  168.         cin >> power;
  169.         cin >> model;
  170.         cin >> amp;
  171.         cin >> price;
  172.         cin >> fullSemi;
  173.         TowerSpeaker ts(power, model, amp, price, fullSemi);
  174.         cout << ts << endl;
  175.         cin >> power;
  176.         cin >> model;
  177.         cin >> amp;
  178.         cin >> price;
  179.         cin >> fullSemi;
  180.         MonitorSpeaker ms(power, model, amp, price, fullSemi);
  181.         cout << ms << endl;
  182.        
  183.     } else if(testCase == 2) {
  184.         cout << "===== TESTING LOWEST PRICE ======" << endl;
  185.         int n;
  186.         cin >> n;
  187.         Speaker** speakers = new Speaker*[n];
  188.         for(int i = 0; i < n; ++i) {
  189.             cin >> power;
  190.             cin >> model;
  191.             cin >> amp;
  192.             cin >> price;
  193.             cin >> fullSemi;
  194.             if(i % 2 == 1)
  195.                 speakers[i] = new TowerSpeaker(power, model, amp, price, fullSemi);
  196.             else
  197.                 speakers[i] = new MonitorSpeaker(power, model, amp, price, fullSemi);
  198.         }
  199.        
  200.         lowestPrice(speakers, n);
  201.         for(int i = 0; i < n; ++i) {
  202.             delete speakers[i];
  203.         }
  204.         delete [] speakers;
  205.     } else if(testCase == 3) {
  206.         cout << "===== TESTING DDV STATIC ======" << endl;
  207.         int n;
  208.         cin >> n;
  209.         Speaker** speakers = new Speaker*[n];
  210.         for(int i = 0; i < n; ++i) {
  211.             cin >> power;
  212.             cin >> model;
  213.             cin >> amp;
  214.             cin >> price;
  215.             cin >> fullSemi;
  216.             if(i % 2 == 1)
  217.                 speakers[i] = new TowerSpeaker(power, model, amp, price, fullSemi);
  218.             else
  219.                 speakers[i] = new MonitorSpeaker(power, model, amp, price, fullSemi);
  220.         }
  221.         Speaker::vkupnoDDV(speakers, n);
  222.         int ddv;
  223.         cin >> ddv;
  224.         Speaker::smeniDDV(ddv);
  225.         Speaker::vkupnoDDV(speakers, n);
  226.         for(int i = 0; i < n; ++i) {
  227.             delete speakers[i];
  228.         }
  229.         delete [] speakers;
  230.     }
  231.    
  232. }
Advertisement
Add Comment
Please, Sign In to add comment