jordanov

Мој Термин C++

May 10th, 2020
394
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.18 KB | None | 0 0
  1. Мој Термин Problem 5 (0 / 3)
  2. Со цел да се подобри системот Мој Термин, со воведување функционалност за пресметување плати за лекарите за еден месец, од Министерството за здравство на Република Македонија, ги добивате следните задачи:
  3. Да се креира класа Lekar во која што ќе се чуваат:
  4.  
  5. факсимил на докторот (цел број)
  6. име (низа од максимум 10 знаци)
  7. презиме (низа од максимум 10 знаци)
  8. почетна плата (децимален број)
  9. За класата да се имплементираат методите:
  10. void pecati(): Печати информации за лекарот во формат Факсимил: име презиме
  11. double plata(): ја враќа платата на лекарот
  12. Да се креира класа MaticenLekar која што наследува од Lekar и во неа се чуваат дополнителни информации за:
  13. број на пациенти со којшто лекарот соработувал во текот на месецот (цел број)
  14. котизации наплатени од пациентите во текот на месецот (динамички алоцирана низа од децимални броеви)
  15. За класата да се препокријат методитe:
  16.  
  17. void pecati() : ги печати основните информации за лекарот, а во нов ред го печати и просекот од наплатените котизации
  18. double plata(): ја враќа платата на матичниот лекар
  19. Платата на матичниот лекар се пресметува со зголемување на основната плата за 30% од просекот од наплатените котизации за месецот
  20.  
  21. #include <iostream>
  22. #include <cstring>
  23. using namespace std;
  24.  
  25. class Lekar {
  26. protected:
  27.   int faksimil;
  28.   char ime[10];
  29.   char prezime[10];
  30.   double osnplata;
  31. public:
  32.   Lekar() {}
  33.   Lekar (int f, char *i, char *p, double pl)
  34.   {
  35.     faksimil=f;
  36.     strcpy(ime, i);
  37.     strcpy(prezime, p);
  38.     osnplata=pl;
  39.   }
  40.   Lekar (const Lekar &l)
  41.   {
  42.     faksimil=l.faksimil;
  43.     strcpy(ime, l.ime);
  44.     strcpy(prezime, l.prezime);
  45.     osnplata=l.osnplata;
  46.   }
  47.   void pecati ()
  48.   {
  49.     cout<<faksimil<<": "<<ime<<" "<<prezime<<endl;
  50.   }
  51.   double plata()
  52.   {
  53.     return osnplata;
  54.   }
  55.   ~Lekar() {}
  56. };
  57.  
  58. class MaticenLekar : public Lekar {
  59. private:
  60.   int brojpacienti;
  61.   double *kotizacii;
  62. public:
  63.   /*MaticenLekar(int f=0, char *i="", char *p="", double pl=0, int broj=0, int *kot= new double [0]) : Lekar (f, *i, *p, pl)
  64.   {
  65.     brojpacienti=broj;
  66.     kotizacii = new double [broj];
  67.     for (int i=0; i<broj; i++)
  68.     {
  69.       kotizacii[i]=kot[i];
  70.     }
  71.   }*/
  72.   MaticenLekar() : Lekar() { kotizacii = new double[0]; brojpacienti=0; }
  73.   MaticenLekar (const Lekar &l, int broj, double *kot) : Lekar (l)
  74.   {
  75.     brojpacienti=broj;
  76.     kotizacii = new double [broj];
  77.     for (int i=0; i<brojpacienti; i++)
  78.     {
  79.       kotizacii[i]=kot[i];
  80.     }
  81.   }
  82.   MaticenLekar (const MaticenLekar &m)
  83.   {
  84.     brojpacienti=m.brojpacienti;
  85.     kotizacii = new double [m.brojpacienti];
  86.     for (int i=0; i<brojpacienti; i++)
  87.     {
  88.       kotizacii[i]=m.kotizacii[i];
  89.     }
  90.   }
  91.   ~MaticenLekar() { /*delete [] kotizacii;*/ }
  92.  
  93.   void pecati()
  94.   {
  95.     Lekar::pecati();
  96.     double prosek=0;
  97.     for (int i=0; i<brojpacienti; i++)
  98.     {
  99.       prosek+=kotizacii[i];
  100.     }
  101.     prosek = prosek / brojpacienti;
  102.     cout<<"Prosek od naplateni kotizacii: "<<prosek<<endl;
  103.   }
  104.   double plata()
  105.   {
  106.     double prosek=0;
  107.     for (int i=0; i<brojpacienti; i++)
  108.     {
  109.       prosek+=kotizacii[i];
  110.     }
  111.     prosek = prosek / brojpacienti;
  112.     double platamaticen=Lekar::plata();
  113.     platamaticen = platamaticen + (prosek*30/100);
  114.     return platamaticen;
  115.   }
  116. };
  117.  
  118. int main() {
  119.     int n;
  120.     cin>>n;
  121.     int pacienti;
  122.     double kotizacii[100];
  123.     int faksimil;
  124.     char ime [20];
  125.     char prezime [20];
  126.     double osnovnaPlata;
  127.    
  128.     Lekar * lekari = new Lekar [n];
  129.     MaticenLekar * maticni = new MaticenLekar [n];
  130.    
  131.     for (int i=0;i<n;i++){
  132.         cin >> faksimil >> ime >> prezime >> osnovnaPlata;
  133.         lekari[i] = Lekar(faksimil,ime,prezime,osnovnaPlata);      
  134.     }
  135.    
  136.     for (int i=0;i<n;i++){
  137.         cin >> pacienti;
  138.         for (int j=0;j<pacienti;j++){
  139.             cin >> kotizacii[j];
  140.         }
  141.         maticni[i]=MaticenLekar(lekari[i],pacienti,kotizacii);
  142.     }
  143.    
  144.     int testCase;
  145.     cin>>testCase;
  146.    
  147.     if (testCase==1){
  148.         cout<<"===TESTIRANJE NA KLASATA LEKAR==="<<endl;
  149.         for (int i=0;i<n;i++){
  150.             lekari[i].pecati();
  151.             cout<<"Osnovnata plata na gorenavedeniot lekar e: "<<lekari[i].plata()<<endl;
  152.         }
  153.     }
  154.     else {
  155.         cout<<"===TESTIRANJE NA KLASATA MATICENLEKAR==="<<endl;
  156.         for (int i=0;i<n;i++){
  157.             maticni[i].pecati();
  158.             cout<<"Platata na gorenavedeniot maticen lekar e: "<<maticni[i].plata()<<endl;
  159.         }
  160.     }
  161.    
  162.     delete [] lekari;
  163.     delete [] maticni;
  164.    
  165.     return 0;
  166. }
  167.  
  168.  
  169. *INPUT*
  170. 7
  171. 766433 Cvetanka Cvetkova 27899.90
  172. 123122 Stefan Stefanov 31789.50
  173. 454323 Trajce Trajkov 19458.30
  174. 343989 Goran Trajkov 28945.10
  175. 515788 Nikola Nikolov 36985.50
  176. 784512 Viktorija Stojanovska 37855.00
  177. 985623 Ivana Ivanova 38745.70
  178. 5
  179. 1000 2000 2500 7800 5560
  180. 4
  181. 1000 2000 3000 10000
  182. 6
  183. 7800 7800 8000 9000 900 1000
  184. 5
  185. 1000 1500 2000 2300 2400
  186. 3
  187. 15000 10000 7580
  188. 4
  189. 10000 7000 8000 1000
  190. 3
  191. 1000 2000 3000
  192. 1
  193. 1
  194.  
  195.  
  196. *OUTPUT*
  197. ===TESTIRANJE NA KLASATA LEKAR===
  198. 766433: Cvetanka Cvetkova
  199. Osnovnata plata na gorenavedeniot lekar e: 27899.9
  200. 123122: Stefan Stefanov
  201. Osnovnata plata na gorenavedeniot lekar e: 31789.5
  202. 454323: Trajce Trajkov
  203. Osnovnata plata na gorenavedeniot lekar e: 19458.3
  204. 343989: Goran Trajkov
  205. Osnovnata plata na gorenavedeniot lekar e: 28945.1
  206. 515788: Nikola Nikolov
  207. Osnovnata plata na gorenavedeniot lekar e: 36985.5
  208. 784512: Viktorija Stojanovska
  209. Osnovnata plata na gorenavedeniot lekar e: 37855
  210. 985623: Ivana Ivanova
  211. Osnovnata plata na gorenavedeniot lekar e: 38745.7
Add Comment
Please, Sign In to add comment