Advertisement
196040

OOP labs 6 Moj Termin

May 5th, 2020
454
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.69 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4. class Lekar { // Да се креира класа Lekar во која што ќе се чуваат:
  5.    private:
  6.     int faksimil; //факсимил на докторот (цел број)
  7.     char ime[10]; //име (низа од максимум 10 знаци)
  8.     char prezime[15]; //презиме (низа од максимум 10 знаци)
  9.     double pocetna; //почетна плата (децимален број)
  10.     public://За класата да се имплементираат методите:
  11.     Lekar() {} //defaulten konstruktor
  12.     Lekar(int faksimil, char * ime, char * prezime, double pocetna) { //konstruktor so argumenti
  13.     this->faksimil=faksimil;
  14.     strcpy(this->ime, ime);
  15.     strcpy(this->prezime, prezime);
  16.     this->pocetna=pocetna;
  17.     }
  18.     Lekar(const Lekar &l) { //copy konstruktor
  19.      this->faksimil=l.faksimil;
  20.     strcpy(this->ime, l.ime);
  21.     strcpy(this->prezime, l.prezime);
  22.     this->pocetna=l.pocetna;
  23.     }
  24.     double plata() { //double plata(): ја враќа платата на лекарот
  25.     return pocetna;
  26.     }
  27.     void pecati() { //void pecati(): Печати информации за лекарот во формат Факсимил: име презиме
  28.     cout<<faksimil<<": "<<ime<<" "<<prezime<<endl;
  29.     }
  30. };
  31. class MaticenLekar : public Lekar { //Да се креира класа MaticenLekar која што наследува од Lekar
  32. private:    //и во неа се чуваат дополнителни информации за:
  33. int pacienti; //број на пациенти со којшто лекарот соработувал во текот на месецот (цел број)
  34. double * kotizacii; //котизации наплатени од пациентите во текот на месецот
  35.     //(динамички алоцирана низа од децимални броеви)
  36.     public:  //  За класата да се препокријат методитe:
  37.     MaticenLekar() {} // defaulten konstruktor
  38.     MaticenLekar(Lekar &l, int pacienti, double *kotizacii) : Lekar(l) { // konstruktor so argumenti
  39.     this->pacienti=pacienti;
  40.         this->kotizacii=new double [pacienti];
  41.         for(int i=0; i<pacienti; i++)
  42.        this->kotizacii[i]=kotizacii[i];
  43.     }      
  44.     MaticenLekar(const MaticenLekar &m) : Lekar(m) { //copy konstruktor
  45.     this->pacienti=m.pacienti;
  46.         this->kotizacii=new double [m.pacienti];
  47.         for(int i=0;i<this->pacienti;i++)
  48.        this->kotizacii[i]=m.kotizacii[i];
  49.     }  
  50.     double prosek() { //za da racuna prosek na kotizaciite
  51.         double suma=0.0;
  52.         for(int i=0; i<this->pacienti;i++) {
  53.         suma=suma+kotizacii[i];
  54.         }
  55.        return suma/pacienti;
  56.     }
  57.     void pecati() { //void pecati() :
  58.         Lekar::pecati(); //ги печати основните информации за лекарот,
  59.         cout<<"Prosek na kotizacii: "<<prosek();
  60.         cout<<endl; //а во нов ред го печати и просекот од наплатените котизации
  61.     }
  62.     double plata() { // double plata(): ја враќа платата на матичниот лекар
  63.        return Lekar::plata()+(0.3*prosek()); // Платата на матичниот лекар се пресметува со зголемување
  64.     }    //  на основната плата за 30% од просекот од наплатените котизации за месецот
  65.   // ~MaticenLekar(){        // probav da izbrisam ama code ne mi dava ne sum jas kriva
  66.     //delete [] kotizacii;
  67.     //}
  68. };
  69.     int main() {
  70.     int n;
  71.     cin>>n;
  72.     int pacienti;
  73.     double kotizacii[100];
  74.     int faksimil;
  75.     char ime [20];
  76.     char prezime [20];
  77.     double osnovnaPlata;
  78.     Lekar * lekari = new Lekar [n];
  79.     MaticenLekar * maticni = new MaticenLekar [n];
  80.     for (int i=0;i<n;i++){
  81.         cin >> faksimil >> ime >> prezime >> osnovnaPlata;
  82.         lekari[i] = Lekar(faksimil,ime,prezime,osnovnaPlata);      
  83.     }
  84.     for (int i=0;i<n;i++){
  85.         cin >> pacienti;
  86.         for (int j=0;j<pacienti;j++){
  87.             cin >> kotizacii[j];
  88.         }
  89.         maticni[i]=MaticenLekar(lekari[i],pacienti,kotizacii);
  90.     }
  91.     int testCase;
  92.     cin>>testCase;
  93.     if (testCase==1){
  94.         cout<<"===TESTIRANJE NA KLASATA LEKAR==="<<endl;
  95.         for (int i=0;i<n;i++){
  96.             lekari[i].pecati();
  97.             cout<<"Osnovnata plata na gorenavedeniot lekar e: "<<lekari[i].plata()<<endl;
  98.         }
  99.     }
  100.     else {
  101.         cout<<"===TESTIRANJE NA KLASATA MATICENLEKAR==="<<endl;
  102.         for (int i=0;i<n;i++){
  103.             maticni[i].pecati();
  104.             cout<<"Platata na gorenavedeniot maticen lekar e: "<<maticni[i].plata()<<endl;
  105.         }
  106.     }
  107.     delete [] lekari;
  108.     delete [] maticni;
  109.     return 0;
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement