StefiIOE

Moj Termin lab 6 oop : nasleduvanje

Apr 28th, 2020
926
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<iostream>
  2. #include<cstring>
  3.  
  4. using namespace std;
  5.  
  6. class Lekar {
  7.     protected:
  8.     int faksimil;
  9.     char ime [10];
  10.     char prezime[13];
  11.     double pocetnaPlata;
  12.     void copy(const Lekar &l)
  13.     {
  14.         this->faksimil=l.faksimil;
  15.         strcpy(this->ime,l.ime);
  16.         strcpy(this->prezime,l.prezime);
  17.         this->pocetnaPlata=l.pocetnaPlata;
  18.     }
  19.     public:
  20.     Lekar(int faksimil=0, char *ime="" , char*prezime= "" , double pocetnaPlata=0.0)
  21.     {
  22.         this->faksimil=faksimil;
  23.         strcpy(this->ime,ime);
  24.         strcpy(this->prezime,prezime);
  25.         this->pocetnaPlata=pocetnaPlata;
  26.     }
  27.     Lekar(const Lekar &l)
  28.     {
  29.         copy(l);
  30.     }
  31.     Lekar &operator=(const Lekar &l)
  32.     {
  33.         if(this!=&l)
  34.         {
  35.             copy(l);
  36.         }
  37.         return *this;
  38.        
  39.     }
  40.     double plata()
  41.     {
  42.     return pocetnaPlata;
  43.     }
  44.        
  45.     void pecati()
  46.     {
  47.     cout<<faksimil<<": "<<ime<<" "<<prezime<<endl;
  48.     }
  49. };
  50. class MaticenLekar :public Lekar
  51. {
  52. private:
  53.     int pacienti ;
  54.     double *kotizacii;
  55.     void copy(const MaticenLekar &m)
  56.     {
  57.         this->faksimil = m.faksimil;
  58.         strcpy(this->ime,m.ime);
  59.         strcpy(this->prezime,m.prezime);
  60.         this->pocetnaPlata=m.pocetnaPlata;
  61.         this->pacienti = m.pacienti;
  62.         this->kotizacii = new double [this->pacienti];
  63.         for (int i=0;i<pacienti;i++)
  64.             this->kotizacii[i]=m.kotizacii[i];
  65.     }
  66.    
  67.    
  68.     public:
  69.    
  70.      MaticenLekar () : Lekar() {
  71.         pacienti = 0;
  72.         this->kotizacii = new double[0];        
  73.      }
  74.     MaticenLekar(Lekar l , int pacienti , double *kotizacii):Lekar (l)
  75.     {
  76.     this->pacienti=pacienti;
  77.     this->kotizacii=new double[pacienti];
  78.         for(int i = 0 ; i <pacienti ; i++)
  79.         {
  80.         this->kotizacii[i]=kotizacii[i];
  81.         }
  82.     }
  83.     MaticenLekar(const MaticenLekar &m)
  84.     {
  85.     copy(m);
  86.     }
  87. MaticenLekar &operator=(const MaticenLekar &m)
  88. {
  89.     if(this!=&m){
  90.     delete [] kotizacii;
  91.     copy(m);
  92.     }
  93.     return *this;
  94. }
  95. double prosek(){
  96.         double sum = 0.0;
  97.         for (int i=0;i<=pacienti;i++)
  98.            
  99.         sum+=kotizacii[i];
  100.    
  101.     return sum/pacienti*1.0;
  102.         }
  103.  
  104.     double plata()
  105.     {
  106.     return Lekar::plata() + 0.3 * prosek();
  107.     }
  108.     void pecati()
  109.     {
  110.     Lekar::pecati();
  111.     cout<<"Prosek na kotizacii: "<<prosek()<<endl;
  112.     }
  113.     ~MaticenLekar(){delete[]kotizacii;}
  114. };
  115. int main() {
  116.     int n;
  117.     cin>>n;
  118.     int pacienti;
  119.     double kotizacii[100];
  120.     int faksimil;
  121.     char ime [20];
  122.     char prezime [20];
  123.     double osnovnaPlata;
  124.    
  125.     Lekar * lekari = new Lekar [n];
  126.     MaticenLekar * maticni = new MaticenLekar [n];
  127.    
  128.     for (int i=0;i<n;i++){
  129.         cin >> faksimil >> ime >> prezime >> osnovnaPlata;
  130.         lekari[i] = Lekar(faksimil,ime,prezime,osnovnaPlata);      
  131.     }
  132.    
  133.     for (int i=0;i<n;i++){
  134.         cin >> pacienti;
  135.         for (int j=0;j<pacienti;j++){
  136.             cin >> kotizacii[j];
  137.         }
  138.         maticni[i]=MaticenLekar(lekari[i],pacienti,kotizacii);
  139.     }
  140.    
  141.     int testCase;
  142.     cin>>testCase;
  143.    
  144.     if (testCase==1){
  145.         cout<<"===TESTIRANJE NA KLASATA LEKAR==="<<endl;
  146.         for (int i=0;i<n;i++){
  147.             lekari[i].pecati();
  148.             cout<<"Osnovnata plata na gorenavedeniot lekar e: "<<lekari[i].plata()<<endl;
  149.         }
  150.     }
  151.     else {
  152.         cout<<"===TESTIRANJE NA KLASATA MATICENLEKAR==="<<endl;
  153.         for (int i=0;i<n;i++){
  154.             maticni[i].pecati();
  155.             cout<<"Platata na gorenavedeniot maticen lekar e: "<<maticni[i].plata()<<endl;
  156.         }
  157.     }
  158.    
  159.     delete [] lekari;
  160.     delete [] maticni;
  161.    
  162.     return 0;
  163. }
RAW Paste Data