Advertisement
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 mokjnost;
- char* model;
- bool pojachalo;
- float cena;
- static int DDV;
- public:
- Speaker(float power,char* model,bool amp,float price){
- mokjnost=power;
- this->model=new char[strlen(model)+1];
- strcpy(this->model,model);
- pojachalo=amp;
- cena=price;
- }
- friend ostream& operator<<(ostream& out,Speaker& s){
- out<<s.model<<" ";
- (s.pojachalo)? out<<"ima pojachalo " : out<<"nema pojachalo ";
- out<<s.presmetajCena();
- return out;
- }
- virtual float presmetajCena()=0;
- static void smeniDDV(int ddv){
- DDV=ddv;
- }
- static void vkupnoDDV(Speaker** s, int n){
- float vkupnaCena=0;
- float vkupnoDdv=0;
- for(int i=0;i<n;i++){
- vkupnaCena+=s[i]->presmetajCena();
- vkupnoDdv+=s[i]->presmetajCena()*DDV/100;
- }
- cout<<"Vkupna cena: "<<vkupnaCena<<endl<<"Vkupno DDV: "<<vkupnoDdv<<endl;
- }
- virtual ~Speaker(){
- delete [] model;
- }
- };
- int Speaker::DDV=18;
- class TowerSpeaker:public Speaker{
- protected:
- bool stolb;
- public:
- TowerSpeaker(float power,char* model,bool amp,float price,bool fullSemi):Speaker(power,model,amp,price){
- stolb=fullSemi;
- }
- float presmetajCena(){
- int price=cena;
- if(pojachalo) price+=cena*0.1;
- if(stolb) price+=cena*0.05;
- return price;
- }
- };
- class MonitorSpeaker:public Speaker{
- protected:
- bool namena;
- public:
- MonitorSpeaker(float power,char* model,bool amp,float price,bool fullSemi):Speaker(power,model,amp,price){
- namena=fullSemi;
- }
- float presmetajCena(){
- int price=cena;
- if(pojachalo) price+=cena*0.1;
- if(namena) price+=cena*0.15;
- return price;
- }
- };
- void lowestPrice(Speaker** s, int n){
- Speaker *minS=s[0];
- for(int i=0;i<n;i++){
- if(s[i]->presmetajCena()<minS->presmetajCena()){
- minS=s[i];
- }
- }
- cout<<*(minS);
- }
- // 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
Advertisement