Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- // vashiot kod ovde
- class Speaker {
- protected:
- float moknost;
- char model[101];
- bool pojacalo;
- float cena;
- public:
- static int DDV;
- Speaker(float m, char *mo, bool p, float c)
- {
- moknost=m;
- strcpy(model,mo);
- pojacalo=p;
- cena=c;
- }
- char *getModel(){return model;}
- bool getPojacalo(){return pojacalo;}
- static void smeniDDV(int ddv){Speaker::DDV=ddv;}
- static void vkupnoDDV(Speaker** s, int n){
- int sum=0;
- int vkupnoddv=0;
- for(int i=0;i<n;i++)
- {
- sum+=s[i]->presmetajCena();
- }
- vkupnoddv=sum*DDV/100;
- cout<<"Vkupna cena: "<<sum<<endl;
- cout<<"Vkupno DDV: "<<vkupnoddv<<endl;
- }
- virtual float presmetajCena(){return 0;}
- friend ostream &operator<<(ostream &out, Speaker &s)
- {
- out<<s.model<<" ";
- if (s.pojacalo==true)
- out<<"ima pojachalo ";
- else
- out<<"nema pojachalo ";
- out<<s.presmetajCena();
- return out;
- }
- bool operator>(Speaker &s)
- {
- return (presmetajCena()>s.presmetajCena());
- }
- };
- int Speaker::DDV=18;
- class TowerSpeaker : public Speaker{
- private:
- bool stolb;
- public:
- TowerSpeaker(float m, char *mo, bool p, float c, bool s):Speaker(m,mo,p,c)
- {
- stolb=s;
- }
- float presmetajCena(){
- int a=0,b=0;
- if(pojacalo){a=cena*0.1;}
- if(stolb){b=cena*0.05;}
- return cena+a+b;
- }
- };
- class MonitorSpeaker: public Speaker{
- private:
- bool namena;
- public:
- MonitorSpeaker(float m, char *mo, bool p, float c, bool n):Speaker(m,mo,p,c)
- {
- namena = n;
- }
- float presmetajCena(){
- int a=0,b=0;
- if(pojacalo){a=cena*0.1;}
- if(namena){b=cena*0.15;}
- return cena+a+b;
- }
- };
- void lowestPrice(Speaker** s, int n){
- int min= s[0]->presmetajCena();
- int index;
- for(int i=0;i<n;i++)
- if(min>s[i]->presmetajCena())
- {
- min=s[i]->presmetajCena();
- index=i;
- }
- cout<<s[index]->getModel();
- if(s[index]->getPojacalo())
- cout<<" ima pojachalo ";
- else
- cout<<" nema pojachalo ";
- cout<<s[index]->presmetajCena();
- }
- // zabraneto e menuvanje na main funkcijata
- 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