Advertisement
borisdexter

Ispitna 2 chas

Jan 26th, 2020
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.61 KB | None | 0 0
  1. Направи класа програмер што ќе чува податоци: име на програмерот (динамички алоцирано), kolku saati raboti nedelno, искуствo од класата Enum (junior/senior/hoe). Pocetna plata za sekoj programer e 250 denari na saat (hourlyRate). Ova moze da se menuva vo tekot na programata. Направи класа Абстракт и преоптовари ги следниве функции:
  2.  
  3. -salary() - presmetuva plata na nekoj shto ke nasleduva
  4. -tax() - presmetuva kolku danok treba da se plati, osnovna cena na danokot e 5%
  5. -print()
  6.  
  7. Потоа од оваа класа изведи класи за WebDeveloper, BackEndDeveloper, FullStackDeveloper.
  8. Nedelna plata se presmetuva na sledniot nacin:
  9. nedelnoSaati * hourlyRate * JobPosition
  10. 1. WebDeveloper - ako raboti od doma zarabotuva 20% pomalku
  11. 2. BackEndDeveloper - ako znae pomalku od 2 jazici zarabotuva 30% pomalku, ako znae pomegju 2 i 5 jazici zarabotuva 10% pomalku i ako znae nad 5 jazici zarabotuva 20% poveke od obicniot programer
  12. 3. FullStackDeveloper - ako ima pomalku od 5 godini iskustvo i ne e HOE togash zarabotuva 15% poveke, ako ima nad 5 godini iskustvo i ne e HOE togash zarabotuva 30% poveke i ako ima nad 5 godini iskustvo i e HOE togash zarabotuva 100% poveke
  13.  
  14. DDV za sekoja klasa ke bide razlichno. WebDeveloper plakja 10% danok ako raboti od doma, 15% ako ne raboti od doma. BackEndDeveloper plakja standardnata cena za danok. FullStackDeveloper plakja 15% ako raboti pomalku od 10 godini, plakja 7% ako raboti nad 10 godini i pomalku od 25 godini, nad 25 godini plakja standardna cena;
  15.  
  16. -najPlatenProgramer() - se printa najplateniot programer posle danok
  17. -najmalkuDanokProgramer() - koj plakja najmalku danok
  18. -vkupnaPlataNaSiteProgrameriPosleDanok() - samoto ime kazuva
  19. -daliSiteProgrameriZarabotuvaatNad(float nadVolku)
  20.  
  21.  
  22. #include<iostream>
  23. using namespace std;
  24. enum JobPosition{junior=1,senior,hoe};
  25.  
  26. class Abstract{
  27. public:
  28. // ako ne se preoptovari ke vrakja 5
  29. virtual float tax(){
  30. return 5;
  31. }
  32. // mora da se preoptovari
  33. virtual float salary()=0;
  34. virtual void print()=0;
  35. };
  36. class Programer{
  37. protected:
  38. char *ime;
  39. int nedelnoH;
  40. JobPosition objekt;
  41. static float hourlyRate;
  42. public:
  43. Programer(){
  44. ime=new char[0];
  45. }
  46. Programer(char *ime,int nedelnoH,JobPosition objekt){
  47. this->ime=new char[strlen(ime)+1];
  48. strcpy(this->ime,ime);
  49. this->nedelnoH=nedelnoH;
  50. this->objekt=objekt;
  51. }
  52.  
  53. ~Programer(){
  54. delete []ime;
  55. }
  56. };
  57. float Programer::hourlyRate=250;
  58.  
  59. class WebDeveloper: public Programer,public Abstract{
  60. private:
  61. bool daliRabotiOdDoma;
  62. public:
  63. WebDeveloper(){}
  64. WebDeveloper(char *ime,int nedelnoH,JobPosition objekt,bool daliRabotiOdDoma):Programer(ime,nedelnoH,objekt){
  65. this->daliRabotiOdDoma=daliRabotiOdDoma;
  66. }
  67.  
  68. float tax(){
  69. if(daliRabotiOdDoma){
  70. return 10;
  71. }else{
  72. return 15;
  73. }
  74. }
  75.  
  76. float salary(){
  77. if(daliRabotiOdDoma){
  78. // moze i Programer::hourlyRate
  79. return 0.8*nedelnoH*hourlyRate*objekt;
  80. }else{
  81. return nedelnoH*hourlyRate*objekt;
  82. }
  83. }
  84.  
  85. void print(){
  86. cout<<"WebDeveloper "<<ime<<" "<<nedelnoH<<"h "<<objekt<<" "<<daliRabotiOdDoma<<endl;
  87. }
  88.  
  89. ~WebDeveloper(){}
  90. };
  91.  
  92. class BackEndDeveloper: public Programer,public Abstract{
  93. private:
  94. int kolkuJaziciZnae;
  95. public:
  96. BackEndDeveloper(){}
  97. BackEndDeveloper(char *ime,int nedelnoH,JobPosition objekt,int kolkuJaziciZnae):Programer(ime,nedelnoH,objekt){
  98. this->kolkuJaziciZnae=kolkuJaziciZnae;
  99. }
  100.  
  101. // ne mora da ja preoptovarime
  102. /*
  103. float tax(){
  104. return 0;
  105. }
  106. */
  107.  
  108. float salary(){
  109. if(kolkuJaziciZnae<2){
  110. return 0.7*nedelnoH*hourlyRate*objekt;
  111. }else if(kolkuJaziciZnae>=2 && kolkuJaziciZnae<5){
  112. return 0.9*nedelnoH*hourlyRate*objekt;
  113. }else{
  114. return 1.2*nedelnoH*hourlyRate*objekt;
  115. }
  116. }
  117.  
  118. void print(){
  119. cout<<"BackEndDeveloper "<<ime<<" "<<nedelnoH<<"h "<<objekt<<" "<<kolkuJaziciZnae<<endl;
  120. }
  121.  
  122. ~BackEndDeveloper(){}
  123. };
  124.  
  125. class FullStackDeveloper: public Programer,public Abstract{
  126. private:
  127. int godiniIskustvo;
  128. public:
  129. FullStackDeveloper(){}
  130. FullStackDeveloper(char *ime,int nedelnoH,JobPosition objekt,int godiniIskustvo):Programer(ime,nedelnoH,objekt){
  131. this->godiniIskustvo=godiniIskustvo;
  132. }
  133.  
  134. float tax(){
  135. if(godiniIskustvo<10){
  136. return 15;
  137. }else if(godiniIskustvo>=10 && godiniIskustvo<25){
  138. return 7;
  139. }else{
  140. // return 5;
  141. return Abstract::tax();
  142. }
  143. }
  144.  
  145. float salary(){
  146. if(godiniIskustvo<5 && objekt!=3){
  147. return 1.15*nedelnoH*hourlyRate*objekt;
  148. }else if(godiniIskustvo>=5 && objekt!=3){
  149. return 1.3*nedelnoH*hourlyRate*objekt;
  150. }else if(godiniIskustvo>5 && objekt==3){
  151. return 2*nedelnoH*hourlyRate*objekt;
  152. }else{
  153. return nedelnoH*hourlyRate*objekt;
  154. }
  155. }
  156.  
  157. void print(){
  158. cout<<"FullStackDeveloper "<<ime<<" "<<nedelnoH<<"h "<<objekt<<" "<<godiniIskustvo<<endl;
  159. }
  160.  
  161. ~FullStackDeveloper(){}
  162. };
  163.  
  164. void printAllProgramers(Abstract **niza,int n){
  165. for(int i=0;i<n;i++){
  166. niza[i]->print();
  167. }
  168. }
  169.  
  170. void printAllSalaries(Abstract **niza,int n){
  171. for(int i=0;i<n;i++){
  172. niza[i]->print();
  173. cout<<"Zarabotuva:"<<niza[i]->salary()<<endl;
  174. }
  175. }
  176.  
  177. void kolkuDanok(Abstract **niza,int n){
  178. for(int i=0;i<n;i++){
  179. niza[i]->print();
  180. cout<<"Zarabotuva:"<<niza[i]->salary()<<endl;
  181. cout<<"Danok plakja: "<<niza[i]->tax()<<"%"<<endl;
  182. }
  183. }
  184.  
  185.  
  186. void vkupnaPlataNaSiteProgrameriPosleDanok(Abstract **niza,int n){
  187. float vkupnaPlataSuma=0;
  188. float samoDanok;
  189. for(int i=0;i<n;i++){
  190. samoDanok=(niza[i]->tax()/100)*niza[i]->salary();
  191. vkupnaPlataSuma+=niza[i]->salary() - samoDanok;
  192. niza[i]->print();
  193. cout<<"Vkupnata plata "<<niza[i]->salary()<<", posle danok: "<<niza[i]->salary()-samoDanok<<endl;
  194. }
  195. cout<<"Za site programeri vkupnata plata posle danok e "<<vkupnaPlataSuma<<endl;
  196. }
  197.  
  198.  
  199. int main(){
  200. Abstract **niza=new Abstract*[5];
  201. niza[0]=new WebDeveloper("Borjan",18,(JobPosition)2,true);
  202. niza[1]=new BackEndDeveloper("David",24,(JobPosition)1,2);
  203. niza[2]=new BackEndDeveloper("Aleksandra",16,(JobPosition)3,5);
  204. niza[3]=new FullStackDeveloper("Petar",20,(JobPosition)2,3);
  205. niza[4]=new WebDeveloper("Simona",20,(JobPosition)2,false);
  206. vkupnaPlataNaSiteProgrameriPosleDanok(niza,5);
  207. return 0;
  208. }
  209.  
  210. /*
  211. int main(){
  212.  
  213. JobPosition objekt;
  214. objekt=senior;
  215. if(objekt==1){
  216. cout<<"Objektot e senior"<<endl;
  217. }
  218. return 0;
  219. }
  220. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement