Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Направи класа програмер што ќе чува податоци: име на програмерот (динамички алоцирано), 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. Направи класа Абстракт и преоптовари ги следниве функции:
- -salary() - presmetuva plata na nekoj shto ke nasleduva
- -tax() - presmetuva kolku danok treba da se plati, osnovna cena na danokot e 5%
- -print()
- Потоа од оваа класа изведи класи за WebDeveloper, BackEndDeveloper, FullStackDeveloper.
- Nedelna plata se presmetuva na sledniot nacin:
- nedelnoSaati * hourlyRate * JobPosition
- 1. WebDeveloper - ako raboti od doma zarabotuva 20% pomalku
- 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
- 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
- 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;
- -najPlatenProgramer() - se printa najplateniot programer posle danok
- -najmalkuDanokProgramer() - koj plakja najmalku danok
- -vkupnaPlataNaSiteProgrameriPosleDanok() - samoto ime kazuva
- -daliSiteProgrameriZarabotuvaatNad(float nadVolku)
- #include<iostream>
- using namespace std;
- enum JobPosition{junior=1,senior,hoe};
- class Abstract{
- public:
- // ako ne se preoptovari ke vrakja 5
- virtual float tax(){
- return 5;
- }
- // mora da se preoptovari
- virtual float salary()=0;
- virtual void print()=0;
- };
- class Programer{
- protected:
- char *ime;
- int nedelnoH;
- JobPosition objekt;
- static float hourlyRate;
- public:
- Programer(){
- ime=new char[0];
- }
- Programer(char *ime,int nedelnoH,JobPosition objekt){
- this->ime=new char[strlen(ime)+1];
- strcpy(this->ime,ime);
- this->nedelnoH=nedelnoH;
- this->objekt=objekt;
- }
- ~Programer(){
- delete []ime;
- }
- };
- float Programer::hourlyRate=250;
- class WebDeveloper: public Programer,public Abstract{
- private:
- bool daliRabotiOdDoma;
- public:
- WebDeveloper(){}
- WebDeveloper(char *ime,int nedelnoH,JobPosition objekt,bool daliRabotiOdDoma):Programer(ime,nedelnoH,objekt){
- this->daliRabotiOdDoma=daliRabotiOdDoma;
- }
- float tax(){
- if(daliRabotiOdDoma){
- return 10;
- }else{
- return 15;
- }
- }
- float salary(){
- if(daliRabotiOdDoma){
- // moze i Programer::hourlyRate
- return 0.8*nedelnoH*hourlyRate*objekt;
- }else{
- return nedelnoH*hourlyRate*objekt;
- }
- }
- void print(){
- cout<<"WebDeveloper "<<ime<<" "<<nedelnoH<<"h "<<objekt<<" "<<daliRabotiOdDoma<<endl;
- }
- ~WebDeveloper(){}
- };
- class BackEndDeveloper: public Programer,public Abstract{
- private:
- int kolkuJaziciZnae;
- public:
- BackEndDeveloper(){}
- BackEndDeveloper(char *ime,int nedelnoH,JobPosition objekt,int kolkuJaziciZnae):Programer(ime,nedelnoH,objekt){
- this->kolkuJaziciZnae=kolkuJaziciZnae;
- }
- // ne mora da ja preoptovarime
- /*
- float tax(){
- return 0;
- }
- */
- float salary(){
- if(kolkuJaziciZnae<2){
- return 0.7*nedelnoH*hourlyRate*objekt;
- }else if(kolkuJaziciZnae>=2 && kolkuJaziciZnae<5){
- return 0.9*nedelnoH*hourlyRate*objekt;
- }else{
- return 1.2*nedelnoH*hourlyRate*objekt;
- }
- }
- void print(){
- cout<<"BackEndDeveloper "<<ime<<" "<<nedelnoH<<"h "<<objekt<<" "<<kolkuJaziciZnae<<endl;
- }
- ~BackEndDeveloper(){}
- };
- class FullStackDeveloper: public Programer,public Abstract{
- private:
- int godiniIskustvo;
- public:
- FullStackDeveloper(){}
- FullStackDeveloper(char *ime,int nedelnoH,JobPosition objekt,int godiniIskustvo):Programer(ime,nedelnoH,objekt){
- this->godiniIskustvo=godiniIskustvo;
- }
- float tax(){
- if(godiniIskustvo<10){
- return 15;
- }else if(godiniIskustvo>=10 && godiniIskustvo<25){
- return 7;
- }else{
- // return 5;
- return Abstract::tax();
- }
- }
- float salary(){
- if(godiniIskustvo<5 && objekt!=3){
- return 1.15*nedelnoH*hourlyRate*objekt;
- }else if(godiniIskustvo>=5 && objekt!=3){
- return 1.3*nedelnoH*hourlyRate*objekt;
- }else if(godiniIskustvo>5 && objekt==3){
- return 2*nedelnoH*hourlyRate*objekt;
- }else{
- return nedelnoH*hourlyRate*objekt;
- }
- }
- void print(){
- cout<<"FullStackDeveloper "<<ime<<" "<<nedelnoH<<"h "<<objekt<<" "<<godiniIskustvo<<endl;
- }
- ~FullStackDeveloper(){}
- };
- void printAllProgramers(Abstract **niza,int n){
- for(int i=0;i<n;i++){
- niza[i]->print();
- }
- }
- void printAllSalaries(Abstract **niza,int n){
- for(int i=0;i<n;i++){
- niza[i]->print();
- cout<<"Zarabotuva:"<<niza[i]->salary()<<endl;
- }
- }
- void kolkuDanok(Abstract **niza,int n){
- for(int i=0;i<n;i++){
- niza[i]->print();
- cout<<"Zarabotuva:"<<niza[i]->salary()<<endl;
- cout<<"Danok plakja: "<<niza[i]->tax()<<"%"<<endl;
- }
- }
- void vkupnaPlataNaSiteProgrameriPosleDanok(Abstract **niza,int n){
- float vkupnaPlataSuma=0;
- float samoDanok;
- for(int i=0;i<n;i++){
- samoDanok=(niza[i]->tax()/100)*niza[i]->salary();
- vkupnaPlataSuma+=niza[i]->salary() - samoDanok;
- niza[i]->print();
- cout<<"Vkupnata plata "<<niza[i]->salary()<<", posle danok: "<<niza[i]->salary()-samoDanok<<endl;
- }
- cout<<"Za site programeri vkupnata plata posle danok e "<<vkupnaPlataSuma<<endl;
- }
- int main(){
- Abstract **niza=new Abstract*[5];
- niza[0]=new WebDeveloper("Borjan",18,(JobPosition)2,true);
- niza[1]=new BackEndDeveloper("David",24,(JobPosition)1,2);
- niza[2]=new BackEndDeveloper("Aleksandra",16,(JobPosition)3,5);
- niza[3]=new FullStackDeveloper("Petar",20,(JobPosition)2,3);
- niza[4]=new WebDeveloper("Simona",20,(JobPosition)2,false);
- vkupnaPlataNaSiteProgrameriPosleDanok(niza,5);
- return 0;
- }
- /*
- int main(){
- JobPosition objekt;
- objekt=senior;
- if(objekt==1){
- cout<<"Objektot e senior"<<endl;
- }
- return 0;
- }
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement