Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Мој Термин Problem 5 (0 / 3)
- Со цел да се подобри системот Мој Термин, со воведување функционалност за пресметување плати за лекарите за еден месец, од Министерството за здравство на Република Македонија, ги добивате следните задачи:
- Да се креира класа Lekar во која што ќе се чуваат:
- факсимил на докторот (цел број)
- име (низа од максимум 10 знаци)
- презиме (низа од максимум 10 знаци)
- почетна плата (децимален број)
- За класата да се имплементираат методите:
- void pecati(): Печати информации за лекарот во формат Факсимил: име презиме
- double plata(): ја враќа платата на лекарот
- Да се креира класа MaticenLekar која што наследува од Lekar и во неа се чуваат дополнителни информации за:
- број на пациенти со којшто лекарот соработувал во текот на месецот (цел број)
- котизации наплатени од пациентите во текот на месецот (динамички алоцирана низа од децимални броеви)
- За класата да се препокријат методитe:
- void pecati() : ги печати основните информации за лекарот, а во нов ред го печати и просекот од наплатените котизации
- double plata(): ја враќа платата на матичниот лекар
- Платата на матичниот лекар се пресметува со зголемување на основната плата за 30% од просекот од наплатените котизации за месецот
- #include <iostream>
- #include <cstring>
- using namespace std;
- class Lekar {
- protected:
- int faksimil;
- char ime[10];
- char prezime[10];
- double osnplata;
- public:
- Lekar() {}
- Lekar (int f, char *i, char *p, double pl)
- {
- faksimil=f;
- strcpy(ime, i);
- strcpy(prezime, p);
- osnplata=pl;
- }
- Lekar (const Lekar &l)
- {
- faksimil=l.faksimil;
- strcpy(ime, l.ime);
- strcpy(prezime, l.prezime);
- osnplata=l.osnplata;
- }
- void pecati ()
- {
- cout<<faksimil<<": "<<ime<<" "<<prezime<<endl;
- }
- double plata()
- {
- return osnplata;
- }
- ~Lekar() {}
- };
- class MaticenLekar : public Lekar {
- private:
- int brojpacienti;
- double *kotizacii;
- public:
- /*MaticenLekar(int f=0, char *i="", char *p="", double pl=0, int broj=0, int *kot= new double [0]) : Lekar (f, *i, *p, pl)
- {
- brojpacienti=broj;
- kotizacii = new double [broj];
- for (int i=0; i<broj; i++)
- {
- kotizacii[i]=kot[i];
- }
- }*/
- MaticenLekar() : Lekar() { kotizacii = new double[0]; brojpacienti=0; }
- MaticenLekar (const Lekar &l, int broj, double *kot) : Lekar (l)
- {
- brojpacienti=broj;
- kotizacii = new double [broj];
- for (int i=0; i<brojpacienti; i++)
- {
- kotizacii[i]=kot[i];
- }
- }
- MaticenLekar (const MaticenLekar &m)
- {
- brojpacienti=m.brojpacienti;
- kotizacii = new double [m.brojpacienti];
- for (int i=0; i<brojpacienti; i++)
- {
- kotizacii[i]=m.kotizacii[i];
- }
- }
- ~MaticenLekar() { /*delete [] kotizacii;*/ }
- void pecati()
- {
- Lekar::pecati();
- double prosek=0;
- for (int i=0; i<brojpacienti; i++)
- {
- prosek+=kotizacii[i];
- }
- prosek = prosek / brojpacienti;
- cout<<"Prosek od naplateni kotizacii: "<<prosek<<endl;
- }
- double plata()
- {
- double prosek=0;
- for (int i=0; i<brojpacienti; i++)
- {
- prosek+=kotizacii[i];
- }
- prosek = prosek / brojpacienti;
- double platamaticen=Lekar::plata();
- platamaticen = platamaticen + (prosek*30/100);
- return platamaticen;
- }
- };
- 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;
- }
- *INPUT*
- 7
- 766433 Cvetanka Cvetkova 27899.90
- 123122 Stefan Stefanov 31789.50
- 454323 Trajce Trajkov 19458.30
- 343989 Goran Trajkov 28945.10
- 515788 Nikola Nikolov 36985.50
- 784512 Viktorija Stojanovska 37855.00
- 985623 Ivana Ivanova 38745.70
- 5
- 1000 2000 2500 7800 5560
- 4
- 1000 2000 3000 10000
- 6
- 7800 7800 8000 9000 900 1000
- 5
- 1000 1500 2000 2300 2400
- 3
- 15000 10000 7580
- 4
- 10000 7000 8000 1000
- 3
- 1000 2000 3000
- 1
- 1
- *OUTPUT*
- ===TESTIRANJE NA KLASATA LEKAR===
- 766433: Cvetanka Cvetkova
- Osnovnata plata na gorenavedeniot lekar e: 27899.9
- 123122: Stefan Stefanov
- Osnovnata plata na gorenavedeniot lekar e: 31789.5
- 454323: Trajce Trajkov
- Osnovnata plata na gorenavedeniot lekar e: 19458.3
- 343989: Goran Trajkov
- Osnovnata plata na gorenavedeniot lekar e: 28945.1
- 515788: Nikola Nikolov
- Osnovnata plata na gorenavedeniot lekar e: 36985.5
- 784512: Viktorija Stojanovska
- Osnovnata plata na gorenavedeniot lekar e: 37855
- 985623: Ivana Ivanova
- Osnovnata plata na gorenavedeniot lekar e: 38745.7
Add Comment
Please, Sign In to add comment