Advertisement
ilevishinov

Звучници

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