Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstring>
- using namespace std;
- class Lekar { // Да се креира класа Lekar во која што ќе се чуваат:
- private:
- int faksimil; //факсимил на докторот (цел број)
- char ime[10]; //име (низа од максимум 10 знаци)
- char prezime[15]; //презиме (низа од максимум 10 знаци)
- double pocetna; //почетна плата (децимален број)
- public://За класата да се имплементираат методите:
- Lekar() {} //defaulten konstruktor
- Lekar(int faksimil, char * ime, char * prezime, double pocetna) { //konstruktor so argumenti
- this->faksimil=faksimil;
- strcpy(this->ime, ime);
- strcpy(this->prezime, prezime);
- this->pocetna=pocetna;
- }
- Lekar(const Lekar &l) { //copy konstruktor
- this->faksimil=l.faksimil;
- strcpy(this->ime, l.ime);
- strcpy(this->prezime, l.prezime);
- this->pocetna=l.pocetna;
- }
- double plata() { //double plata(): ја враќа платата на лекарот
- return pocetna;
- }
- void pecati() { //void pecati(): Печати информации за лекарот во формат Факсимил: име презиме
- cout<<faksimil<<": "<<ime<<" "<<prezime<<endl;
- }
- };
- class MaticenLekar : public Lekar { //Да се креира класа MaticenLekar која што наследува од Lekar
- private: //и во неа се чуваат дополнителни информации за:
- int pacienti; //број на пациенти со којшто лекарот соработувал во текот на месецот (цел број)
- double * kotizacii; //котизации наплатени од пациентите во текот на месецот
- //(динамички алоцирана низа од децимални броеви)
- public: // За класата да се препокријат методитe:
- MaticenLekar() {} // defaulten konstruktor
- MaticenLekar(Lekar &l, int pacienti, double *kotizacii) : Lekar(l) { // konstruktor so argumenti
- this->pacienti=pacienti;
- this->kotizacii=new double [pacienti];
- for(int i=0; i<pacienti; i++)
- this->kotizacii[i]=kotizacii[i];
- }
- MaticenLekar(const MaticenLekar &m) : Lekar(m) { //copy konstruktor
- this->pacienti=m.pacienti;
- this->kotizacii=new double [m.pacienti];
- for(int i=0;i<this->pacienti;i++)
- this->kotizacii[i]=m.kotizacii[i];
- }
- double prosek() { //za da racuna prosek na kotizaciite
- double suma=0.0;
- for(int i=0; i<this->pacienti;i++) {
- suma=suma+kotizacii[i];
- }
- return suma/pacienti;
- }
- void pecati() { //void pecati() :
- Lekar::pecati(); //ги печати основните информации за лекарот,
- cout<<"Prosek na kotizacii: "<<prosek();
- cout<<endl; //а во нов ред го печати и просекот од наплатените котизации
- }
- double plata() { // double plata(): ја враќа платата на матичниот лекар
- return Lekar::plata()+(0.3*prosek()); // Платата на матичниот лекар се пресметува со зголемување
- } // на основната плата за 30% од просекот од наплатените котизации за месецот
- // ~MaticenLekar(){ // probav da izbrisam ama code ne mi dava ne sum jas kriva
- //delete [] kotizacii;
- //}
- };
- int main() {
- int n;
- cin>>n;
- int pacienti;
- double kotizacii[100];
- int faksimil;
- char ime [20];
- char prezime [20];
- double osnovnaPlata;
- Lekar * lekari = new Lekar [n];
- MaticenLekar * maticni = new MaticenLekar [n];
- for (int i=0;i<n;i++){
- cin >> faksimil >> ime >> prezime >> osnovnaPlata;
- lekari[i] = Lekar(faksimil,ime,prezime,osnovnaPlata);
- }
- for (int i=0;i<n;i++){
- cin >> pacienti;
- for (int j=0;j<pacienti;j++){
- cin >> kotizacii[j];
- }
- maticni[i]=MaticenLekar(lekari[i],pacienti,kotizacii);
- }
- int testCase;
- cin>>testCase;
- if (testCase==1){
- cout<<"===TESTIRANJE NA KLASATA LEKAR==="<<endl;
- for (int i=0;i<n;i++){
- lekari[i].pecati();
- cout<<"Osnovnata plata na gorenavedeniot lekar e: "<<lekari[i].plata()<<endl;
- }
- }
- else {
- cout<<"===TESTIRANJE NA KLASATA MATICENLEKAR==="<<endl;
- for (int i=0;i<n;i++){
- maticni[i].pecati();
- cout<<"Platata na gorenavedeniot maticen lekar e: "<<maticni[i].plata()<<endl;
- }
- }
- delete [] lekari;
- delete [] maticni;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement