Andziev

Звучници

Apr 22nd, 2016
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.96 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. class Speaker
  6. {
  7.     protected:
  8.     float moknost;
  9.     char model [100];
  10.     bool pojacalo;
  11.     float cena;
  12.     static int DDV;
  13.     public:
  14.    
  15.     Speaker(float mok=0.0,const char *mod="",bool p=false,float c=0.0)
  16.     {
  17.         moknost=mok;
  18.         strcpy(model,mod);
  19.         pojacalo=p;
  20.         cena=c;
  21.     }
  22.     virtual float presmetajCena()
  23.     {
  24.         return cena;
  25.     }
  26.     bool getP ()
  27.     {
  28.         return pojacalo;
  29.     }
  30.     bool operator > (Speaker &s)
  31.     {
  32.         return presmetajCena()>s.presmetajCena();
  33.     }
  34.     friend ostream& operator << (ostream &x,Speaker &s)
  35.     {
  36.         if(s.pojacalo)
  37.         x <<s.model<<' '<<"ima pojachalo"<<' '<<s.presmetajCena();
  38.         else
  39.         x <<s.model<<' '<<"nema pojachalo"<<' '<<s.presmetajCena();
  40.         return x;
  41.     }
  42.     static void smeniDDV(int ddv)
  43.     {
  44.         DDV=ddv;
  45.     }
  46.     int getDDV()
  47.     {
  48.         return DDV;
  49.     }
  50.     static void vkupnoDDV(Speaker **s,int n)
  51.     {
  52.         float vkupnoCena=0;
  53.         float vkupnoDDV=0;
  54.         for(int i=0; i<n; i++)
  55.         {
  56.             vkupnoCena+=s[i]->presmetajCena();
  57.             vkupnoDDV+=s[i]->presmetajCena()*s[i]->getDDV()/100;
  58.         }
  59.         cout<<"Vkupna cena: "<<vkupnoCena<<endl;
  60.     cout<<"Vkupno DDV: "<<vkupnoDDV<<endl;
  61.     }
  62. };
  63. int Speaker::DDV = 18;
  64. class TowerSpeaker : public Speaker
  65. {
  66.     bool stolb;
  67.     public:
  68.     TowerSpeaker (float mok=0.0,const char *mod="",bool p=false,float c=0.0,bool s=true)
  69.     : Speaker(mok,mod,p,c)
  70.     {
  71.         stolb=s;
  72.     }
  73.     float presmetajCena()
  74.     {
  75.         float k=0;
  76.         if(Speaker::getP()&&stolb)
  77.             return Speaker::presmetajCena() * 1.15;
  78.         if(Speaker::getP())
  79.             return Speaker::presmetajCena() * 1.10;
  80.         if(stolb)
  81.             return Speaker::presmetajCena() * 1.05;
  82.         else return Speaker::presmetajCena();
  83.        
  84.     }
  85. };
  86. class MonitorSpeaker : public Speaker
  87. {
  88.     bool namena;
  89.     public:
  90.     MonitorSpeaker (float mok=0.0,const char *mod="",bool p=false,float c=0.0,bool n=true)
  91.     : Speaker(mok,mod,p,c)
  92.     {
  93.         namena=n;
  94.     }
  95.     float presmetajCena()
  96.     {
  97.         float k=0;
  98.         if(Speaker::getP()&&namena)
  99.             return Speaker::presmetajCena() * 1.25;
  100.         if(Speaker::getP())
  101.             return Speaker::presmetajCena() * 1.10;
  102.         if(namena)
  103.             return Speaker::presmetajCena() * 1.15;
  104.         else return Speaker::presmetajCena();        
  105.     }
  106. };
  107. void lowestPrice(Speaker **s,int n)
  108. {
  109.     int min=s[0]->presmetajCena(),index;
  110.     for(int i=1; i<n; i++)
  111.     {
  112.         if(min>s[i]->presmetajCena())
  113.         {
  114.             min=s[i]->presmetajCena();
  115.             index=i;
  116.         }
  117.     }
  118.     cout<<*s[index];
  119. }
  120. int main() {
  121.     int testCase;
  122.     cin >> testCase;
  123.     float power;
  124.     char model[100];
  125.     bool amp;
  126.     float price;
  127.     bool fullSemi;
  128.     if(testCase == 1) {
  129.         cout << "===== TESTING CONSTRUCTORS ======" << endl;
  130.         cin >> power;
  131.         cin >> model;
  132.         cin >> amp;
  133.         cin >> price;
  134.         cin >> fullSemi;
  135.         TowerSpeaker ts(power, model, amp, price, fullSemi);
  136.         cout << ts << endl;
  137.         cin >> power;
  138.         cin >> model;
  139.         cin >> amp;
  140.         cin >> price;
  141.         cin >> fullSemi;
  142.         MonitorSpeaker ms(power, model, amp, price, fullSemi);
  143.         cout << ms << endl;
  144.        
  145.     } else if(testCase == 2) {
  146.         cout << "===== TESTING LOWEST PRICE ======" << endl;
  147.         int n;
  148.         cin >> n;
  149.         Speaker** speakers = new Speaker*[n];
  150.         for(int i = 0; i < n; ++i) {
  151.             cin >> power;
  152.             cin >> model;
  153.             cin >> amp;
  154.             cin >> price;
  155.             cin >> fullSemi;
  156.             if(i % 2 == 1)
  157.                 speakers[i] = new TowerSpeaker(power, model, amp, price, fullSemi);
  158.             else
  159.                 speakers[i] = new MonitorSpeaker(power, model, amp, price, fullSemi);
  160.         }
  161.        
  162.         lowestPrice(speakers, n);
  163.         for(int i = 0; i < n; ++i) {
  164.             delete speakers[i];
  165.         }
  166.         delete [] speakers;
  167.     } else if(testCase == 3) {
  168.         cout << "===== TESTING DDV STATIC ======" << endl;
  169.         int n;
  170.         cin >> n;
  171.         Speaker** speakers = new Speaker*[n];
  172.         for(int i = 0; i < n; ++i) {
  173.             cin >> power;
  174.             cin >> model;
  175.             cin >> amp;
  176.             cin >> price;
  177.             cin >> fullSemi;
  178.             if(i % 2 == 1)
  179.                 speakers[i] = new TowerSpeaker(power, model, amp, price, fullSemi);
  180.             else
  181.                 speakers[i] = new MonitorSpeaker(power, model, amp, price, fullSemi);
  182.         }
  183.         Speaker::vkupnoDDV(speakers, n);
  184.         int ddv;
  185.         cin >> ddv;
  186.         Speaker::smeniDDV(ddv);
  187.         Speaker::vkupnoDDV(speakers, n);
  188.         for(int i = 0; i < n; ++i) {
  189.             delete speakers[i];
  190.         }
  191.         delete [] speakers;
  192.     }
  193.    
  194. }
Advertisement
Add Comment
Please, Sign In to add comment