ivana_andreevska

Kolokviusmska/Ispitna zadaca 2

May 8th, 2021
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.16 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. class Predmet {
  6. protected:
  7.     char *sopstvenik;
  8.     char ime[100];
  9.     int cena;
  10. public:
  11.     Predmet(char *sopstvenik="",char *ime="",int cena=0) {
  12.         this->sopstvenik=new char[strlen(sopstvenik)];
  13.         strcpy(this->sopstvenik,sopstvenik);
  14.         strcpy(this->ime,ime);
  15.         this->cena=cena;
  16.     }
  17.     virtual ~Predmet() {
  18.         delete []sopstvenik;
  19.     }
  20.     Predmet(Predmet& obj) {
  21.         sopstvenik=new char[strlen(obj.sopstvenik)];
  22.         strcpy(sopstvenik,obj.sopstvenik);
  23.         strcpy(ime,obj.ime);
  24.         cena=obj.cena;
  25.     }
  26.     Predmet& operator=(Predmet& obj) {
  27.         if (this==&obj)
  28.             return *this;
  29.         delete []sopstvenik;
  30.         sopstvenik=new char[strlen(obj.sopstvenik)];
  31.         strcpy(sopstvenik,obj.sopstvenik);
  32.         strcpy(ime,obj.ime);
  33.         cena=obj.cena;
  34.         return *this;
  35.     }
  36.     int getCena() {
  37.         return cena;
  38.     }
  39.     friend ostream& operator<<(ostream& co,Predmet& obj) {
  40.         return co<<obj.sopstvenik<<"#"<<obj.ime<<"#"<<obj.cena<<endl;
  41.     }
  42.     virtual double prodazna_cena()=0;
  43. };
  44. class TehnichkiPredmet:public Predmet {
  45. private:
  46.     bool garancija;
  47. public:
  48.     TehnichkiPredmet(char *sopstvenik="",char *ime="",int cena=0, bool garancija=true):Predmet(sopstvenik,ime,cena) {
  49.         this->garancija=garancija;
  50.     }
  51.     double prodazna_cena() {
  52.         if (garancija==true) {
  53.             return 1000.0+cena;
  54.         } else {
  55.             return 0.2*1000+cena;
  56.         }
  57.     }
  58. };
  59. class ObichenPredmet:public Predmet {
  60. private:
  61.     double masa;
  62. public:
  63.     ObichenPredmet(char *sopstvenik="",char *ime="",int cena=0, double masa=0):Predmet(sopstvenik,ime,cena) {
  64.         this->masa=masa;
  65.     }
  66.     double prodazna_cena() {
  67.         return masa*500+cena*2;
  68.     }
  69. };
  70. class Rasprodazhba {
  71. private:
  72.     Predmet **p;
  73.     int elem;
  74. public:
  75.     Rasprodazhba(Predmet **p=NULL,int elem=0) {
  76.         this->p=new Predmet*[elem];
  77.         for (int i=0; i<elem; i++)
  78.             this->p[i]=p[i];
  79.         this->elem=elem;
  80.     }
  81.     ~Rasprodazhba() {
  82.         delete []p;
  83.     }
  84.     void dodadiPredmet(Predmet *p) {
  85.         Predmet **tmp=new Predmet*[elem+1];
  86.         for (int i=0; i<elem; i++)
  87.             tmp[i]=this->p[i];
  88.         tmp[elem]=p;
  89.         elem++;
  90.         delete []this->p;
  91.         this->p=tmp;
  92.     }
  93.     Predmet& vratiNajevtinPredmet() {
  94.         Predmet *tmp=p[0];
  95.         for (int i=0; i<elem; i++)
  96.             if (tmp->getCena()>p[i]->getCena())
  97.                 tmp=p[i];
  98.         return *tmp;
  99.     }
  100. };
  101.  
  102. int main() {
  103.     Rasprodazhba r;
  104.     char sopstvenik[100],ime[100];
  105.     bool garancija;
  106.     int kupen,masa;
  107.     int n;
  108.     cin>>n;
  109.     for (int i=0; i<n; i++) {
  110.         int tip;
  111.         cin>>tip;
  112.         if (tip==0) {
  113.             cin>>sopstvenik>>ime>>kupen>>garancija;
  114.             r.dodadiPredmet(new TehnichkiPredmet(sopstvenik, ime, kupen, garancija));
  115.         } else {
  116.             cin>>sopstvenik>>ime>>kupen>>masa;
  117.             r.dodadiPredmet(new ObichenPredmet(sopstvenik, ime, kupen, masa));
  118.         }
  119.     }
  120.  
  121.     cout<<r.vratiNajevtinPredmet();
  122.     return 0;
  123. }
Advertisement
Add Comment
Please, Sign In to add comment