kristina7

Звучници

Apr 25th, 2016
691
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.98 KB | None | 0 0
  1. /*За потребите на компанија која врши продажба на звучници, да се креира класа Speaker во која се чуваат следните податоци:
  2.  
  3. моќност (изразена во W, децимален број),
  4. модел (низа од знаци),
  5. дали има појачало (bool),
  6. основна цена (децимален број).
  7. Компанијата нуди два вида на звучници за кои треба да се дефинираат посебни класи: TowerSpeaker и MonitorSpeaker. За првиот вид звучници дополнително се чува податок за типот на столбот на звучникот (има две можности: full/semi), а за вториот вид звучници дополнително се чува податок за намената (има две можности: за во студио/за друга намена).
  8.  
  9. За класите треба да се обезбедат:
  10.  
  11. соодветни конструктори и деструктори (погледнете ги повиците во main функцијата) (5 поени)
  12. оператор << за печатење на звучниците во формат: (5 поени)
  13.  
  14. модел има/нема појачало цена
  15.  
  16. оператор > за споредба на два звучника од каков било вид според пресметаната цена (5 поени)
  17.  
  18. метод float presmetajCena() за пресметување на цената на посебните видови звучници на следниот начин: (10 поени)
  19. за TowerSpeaker - цената се зголемува за 10% од основната ако звучникот има појачало и за 5% од основната ако видот на столбот е full
  20. за MonitorSpeaker - цената се зголемува за 10% од основната ако звучникот има појачало и за 15% од основната ако е наменет за во студио
  21. Да се имплементира надворешна функција со потпис void lowestPrice(Speaker** s, int n) што ќе го отпечати звучникот со најмала цена. (10 поени)
  22.  
  23. Во класата Speaker се чува целобројна променлива која е заедничка за сите звучници и го означува данокот на додадена вредност (ДДВ) кој се плаќа за овие производи. Иницијалната вредност на оваа променлива е 18. За работа со оваа променлива да се имплементираат следните статички методи: (5 поени)
  24.  
  25. void smeniDDV(int ddv) за менување на вредноста на ДДВ
  26. void vkupnoDDV(Speaker** s, int n) која ја печати вкупната цена што треба да се плати за сите звучници и вкупниот ДДВ.*/
  27.  
  28. #include <iostream>
  29. #include<cstring>
  30. using namespace std;
  31. class Speaker
  32. {
  33. protected:
  34.     float mokjnost;
  35.     char *model;
  36.     bool pojacalo;
  37.     float oCena;
  38. public:
  39.     static int DDV;
  40.     Speaker(float mokjnost=0.0, char *model="", bool pojacalo=false, float oCena=0.0)
  41.     {
  42.         this->mokjnost=mokjnost;
  43.         this->model=new char[strlen(model)+1];
  44.         strcpy(this->model, model);
  45.         this->pojacalo=pojacalo;
  46.         this->oCena=oCena;
  47.     }
  48.     char *getModel(){return this->model;}
  49.     bool getPojacalo(){return this->pojacalo;}
  50.     virtual float presmetajCena(){return 0;}
  51.     friend ostream& operator <<(ostream& o, Speaker &s)
  52.     {
  53.         o<<s.model<<" ";
  54.         if(s.pojacalo)
  55.         {
  56.             o<<"ima pojachalo"<<" ";
  57.         }else
  58.         {
  59.             o<<"nema pojachalo"<<" ";
  60.         }
  61.         o<<s.presmetajCena();
  62.         return o;
  63.     }
  64.     bool operator >(Speaker &s)
  65.     {
  66.         return (this->presmetajCena() > s.presmetajCena());
  67.     }
  68. static void vkupnoDDV(Speaker** s, int n)
  69. {
  70.     int suma=0,vkddv=0;
  71.     for(int i=0;i<n;i++)
  72.     {
  73.         suma+=s[i]->presmetajCena();
  74.        
  75.     }
  76.     vkddv=suma*DDV/100;
  77.     cout<<"Vkupna cena: "<<suma<<endl;
  78.     cout<<"Vkupno DDV: "<<vkddv<<endl;
  79. }
  80. static void smeniDDV(int ddv)
  81. {
  82.     Speaker::DDV=ddv;
  83. }
  84.  
  85. };
  86. int Speaker::DDV=18;
  87.  
  88. class TowerSpeaker: public Speaker
  89. {
  90. private:
  91.     bool tip;
  92. public:
  93.     TowerSpeaker(float mokjnost=0.0, char *model="", bool pojacalo=false, float oCena=0.0, bool tip=false):Speaker(mokjnost,model,pojacalo,oCena)
  94.     {
  95.         this->tip=tip;
  96.     }
  97.     float presmetajCena()
  98.     {
  99.         int poj=0,vktip=0;
  100.         if(pojacalo){poj=oCena*0.1;}
  101.         if(tip){vktip=oCena*0.05;}
  102.         return oCena+poj+vktip;
  103.     }
  104. };
  105. class MonitorSpeaker: public Speaker
  106. {
  107. private:
  108.     bool namena;
  109. public:
  110.     MonitorSpeaker(float mokjnost=0.0, char *model="", bool pojacalo=false, float oCena=0.0, bool namena=false):Speaker(mokjnost,model,pojacalo,oCena)
  111.     {
  112.         this->namena=namena;
  113.     }
  114.     float presmetajCena()
  115.     {
  116.         int poj=0,nam=0;
  117.         if(pojacalo){poj=(oCena*0.1);}
  118.         if(namena){nam=(oCena*0.15);}
  119.         return oCena+poj+nam;
  120.     }
  121. };
  122. void lowestPrice(Speaker** s, int n)
  123. {
  124.    int  mini,minIndex;
  125.     mini=s[0]->presmetajCena();
  126.     for(int i=0;i<n;i++)
  127.     {
  128.         if(mini > s[i]->presmetajCena())
  129.         {
  130.             mini=s[i]->presmetajCena();
  131.             minIndex=i;
  132.         }
  133.     }
  134.     cout<<s[minIndex]->getModel();
  135.     if(s[minIndex]->getPojacalo())
  136.         cout<<" ima pojachalo ";
  137.     else
  138.         cout<<" nema pojachalo ";
  139.     cout<<s[minIndex]->presmetajCena();
  140. }
  141. int main() {
  142.     int testCase;
  143.     cin >> testCase;
  144.     float power;
  145.     char model[100];
  146.     bool amp;
  147.     float price;
  148.     bool fullSemi;
  149.     if(testCase == 1) {
  150.         cout << "===== TESTING CONSTRUCTORS ======" << endl;
  151.         cin >> power;
  152.         cin >> model;
  153.         cin >> amp;
  154.         cin >> price;
  155.         cin >> fullSemi;
  156.         TowerSpeaker ts(power, model, amp, price, fullSemi);
  157.         cout << ts << endl;
  158.         cin >> power;
  159.         cin >> model;
  160.         cin >> amp;
  161.         cin >> price;
  162.         cin >> fullSemi;
  163.         MonitorSpeaker ms(power, model, amp, price, fullSemi);
  164.         cout << ms << endl;
  165.  
  166.     } else if(testCase == 2) {
  167.         cout << "===== TESTING LOWEST PRICE ======" << endl;
  168.         int n;
  169.         cin >> n;
  170.         Speaker** speakers = new Speaker*[n];
  171.         for(int i = 0; i < n; ++i) {
  172.             cin >> power;
  173.             cin >> model;
  174.             cin >> amp;
  175.             cin >> price;
  176.             cin >> fullSemi;
  177.             if(i % 2 == 1)
  178.                 speakers[i] = new TowerSpeaker(power, model, amp, price, fullSemi);
  179.             else
  180.                 speakers[i] = new MonitorSpeaker(power, model, amp, price, fullSemi);
  181.         }
  182.  
  183.         lowestPrice(speakers, n);
  184.         for(int i = 0; i < n; ++i) {
  185.             delete speakers[i];
  186.         }
  187.         delete [] speakers;
  188.     } else if(testCase == 3) {
  189.         cout << "===== TESTING DDV STATIC ======" << endl;
  190.         int n;
  191.         cin >> n;
  192.         Speaker** speakers = new Speaker*[n];
  193.         for(int i = 0; i < n; ++i) {
  194.             cin >> power;
  195.             cin >> model;
  196.             cin >> amp;
  197.             cin >> price;
  198.             cin >> fullSemi;
  199.             if(i % 2 == 1)
  200.                 speakers[i] = new TowerSpeaker(power, model, amp, price, fullSemi);
  201.             else
  202.                 speakers[i] = new MonitorSpeaker(power, model, amp, price, fullSemi);
  203.         }
  204.         Speaker::vkupnoDDV(speakers, n);
  205.         int ddv;
  206.         cin >> ddv;
  207.         Speaker::smeniDDV(ddv);
  208.        Speaker::vkupnoDDV(speakers, n);
  209.         for(int i = 0; i < n; ++i) {
  210.             delete speakers[i];
  211.         }
  212.         delete [] speakers;
  213.     }
  214. }
Advertisement
Add Comment
Please, Sign In to add comment