metalni

OOP Labs 6 Moj termin

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