Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- class Speaker
- {
- protected:
- float moknost;
- char model [100];
- bool pojacalo;
- float cena;
- static int DDV;
- public:
- Speaker(float mok=0.0,const char *mod="",bool p=false,float c=0.0)
- {
- moknost=mok;
- strcpy(model,mod);
- pojacalo=p;
- cena=c;
- }
- virtual float presmetajCena()
- {
- return cena;
- }
- bool getP ()
- {
- return pojacalo;
- }
- bool operator > (Speaker &s)
- {
- return presmetajCena()>s.presmetajCena();
- }
- friend ostream& operator << (ostream &x,Speaker &s)
- {
- if(s.pojacalo)
- x <<s.model<<' '<<"ima pojachalo"<<' '<<s.presmetajCena();
- else
- x <<s.model<<' '<<"nema pojachalo"<<' '<<s.presmetajCena();
- return x;
- }
- static void smeniDDV(int ddv)
- {
- DDV=ddv;
- }
- int getDDV()
- {
- return DDV;
- }
- static void vkupnoDDV(Speaker **s,int n)
- {
- float vkupnoCena=0;
- float vkupnoDDV=0;
- for(int i=0; i<n; i++)
- {
- vkupnoCena+=s[i]->presmetajCena();
- vkupnoDDV+=s[i]->presmetajCena()*s[i]->getDDV()/100;
- }
- cout<<"Vkupna cena: "<<vkupnoCena<<endl;
- cout<<"Vkupno DDV: "<<vkupnoDDV<<endl;
- }
- };
- int Speaker::DDV = 18;
- class TowerSpeaker : public Speaker
- {
- bool stolb;
- public:
- TowerSpeaker (float mok=0.0,const char *mod="",bool p=false,float c=0.0,bool s=true)
- : Speaker(mok,mod,p,c)
- {
- stolb=s;
- }
- float presmetajCena()
- {
- float k=0;
- if(Speaker::getP()&&stolb)
- return Speaker::presmetajCena() * 1.15;
- if(Speaker::getP())
- return Speaker::presmetajCena() * 1.10;
- if(stolb)
- return Speaker::presmetajCena() * 1.05;
- else return Speaker::presmetajCena();
- }
- };
- class MonitorSpeaker : public Speaker
- {
- bool namena;
- public:
- MonitorSpeaker (float mok=0.0,const char *mod="",bool p=false,float c=0.0,bool n=true)
- : Speaker(mok,mod,p,c)
- {
- namena=n;
- }
- float presmetajCena()
- {
- float k=0;
- if(Speaker::getP()&&namena)
- return Speaker::presmetajCena() * 1.25;
- if(Speaker::getP())
- return Speaker::presmetajCena() * 1.10;
- if(namena)
- return Speaker::presmetajCena() * 1.15;
- else return Speaker::presmetajCena();
- }
- };
- void lowestPrice(Speaker **s,int n)
- {
- int min=s[0]->presmetajCena(),index;
- for(int i=1; i<n; i++)
- {
- if(min>s[i]->presmetajCena())
- {
- min=s[i]->presmetajCena();
- index=i;
- }
- }
- cout<<*s[index];
- }
- int main() {
- int testCase;
- cin >> testCase;
- float power;
- char model[100];
- bool amp;
- float price;
- bool fullSemi;
- if(testCase == 1) {
- cout << "===== TESTING CONSTRUCTORS ======" << endl;
- cin >> power;
- cin >> model;
- cin >> amp;
- cin >> price;
- cin >> fullSemi;
- TowerSpeaker ts(power, model, amp, price, fullSemi);
- cout << ts << endl;
- cin >> power;
- cin >> model;
- cin >> amp;
- cin >> price;
- cin >> fullSemi;
- MonitorSpeaker ms(power, model, amp, price, fullSemi);
- cout << ms << endl;
- } else if(testCase == 2) {
- cout << "===== TESTING LOWEST PRICE ======" << endl;
- int n;
- cin >> n;
- Speaker** speakers = new Speaker*[n];
- for(int i = 0; i < n; ++i) {
- cin >> power;
- cin >> model;
- cin >> amp;
- cin >> price;
- cin >> fullSemi;
- if(i % 2 == 1)
- speakers[i] = new TowerSpeaker(power, model, amp, price, fullSemi);
- else
- speakers[i] = new MonitorSpeaker(power, model, amp, price, fullSemi);
- }
- lowestPrice(speakers, n);
- for(int i = 0; i < n; ++i) {
- delete speakers[i];
- }
- delete [] speakers;
- } else if(testCase == 3) {
- cout << "===== TESTING DDV STATIC ======" << endl;
- int n;
- cin >> n;
- Speaker** speakers = new Speaker*[n];
- for(int i = 0; i < n; ++i) {
- cin >> power;
- cin >> model;
- cin >> amp;
- cin >> price;
- cin >> fullSemi;
- if(i % 2 == 1)
- speakers[i] = new TowerSpeaker(power, model, amp, price, fullSemi);
- else
- speakers[i] = new MonitorSpeaker(power, model, amp, price, fullSemi);
- }
- Speaker::vkupnoDDV(speakers, n);
- int ddv;
- cin >> ddv;
- Speaker::smeniDDV(ddv);
- Speaker::vkupnoDDV(speakers, n);
- for(int i = 0; i < n; ++i) {
- delete speakers[i];
- }
- delete [] speakers;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment