HeatPulse

Vozac

May 19th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.70 KB | None | 0 0
  1. Возач Problem 3 (0 / 0)
  2. Да се дефинира класа Vozac во која се чуваат информации за:
  3.  
  4. име (низа од максимум 100 знаци)
  5. возраст (цел број)
  6. број на трки (цел број)
  7. дали е ветеран (да/не).
  8. Да се преоптоварат:
  9.  
  10. операторот << за печатење кој ќе ги печати името, возраст, бројот на трки и дали е ветеран (се печати VETERAN)
  11. операторот == за споредување на два возачи според заработувачката по трка.
  12. Од оваа класа да се изведат две нови класи Avtomobilist и Motociklist.
  13.  
  14. За автомобилистот дополнително се чува:
  15.  
  16. цена на автомобилот (децимален број).
  17. За мотоциклистот дополнително се чува:
  18.  
  19. моќност на мотор (цел број).
  20. Заработувачката по трка на возачите се пресметува како:
  21.  
  22. за автомобилостот заработувачката по трка е CENAAVTOMOBIL5
  23. за мотоциклистот заработувачката по трка е MOKJNOSTNAMOTOR∗20
  24. Секој автомобилист плаќа данок на заработка. Да се напишат соодветни методи за пресметување данок:
  25.  
  26. за автомобилисти: ако бројот на трки е поголем од 10 стапката на данок е 15% од заработката, инаку 10% од заработката.
  27. за мотоциклисти: ако е ветеран стапката на данок е 25% од заработката, инаку 20% од заработката.
  28. Да се напше надворешна функција soIstaZarabotuvachka која како аргументи прима низа од покажувачи од класата Vocac, нивниот број, како и покажувач кон ојбект од возач и враќа како резултат бројот на возачи кои имаат иста заработувачка по трка со проследениот возач.
  29.  
  30. // vashiot kod ovde
  31. #include <iostream>
  32. #include<cstring>
  33. using namespace std;
  34. class Vozac
  35. {
  36. protected:
  37. char ime[100];
  38. int vozrast;
  39. int trki;
  40. bool vet;
  41. public:
  42. Vozac(){}
  43. Vozac(char *ime="",int vozrast=0,int trki=0,bool vet=false)
  44. {
  45. strcpy(this->ime,ime);
  46. this->vozrast=vozrast;
  47. this->trki=trki;
  48. this->vet=vet;
  49. }
  50. Vozac( const Vozac &d)
  51. {
  52. strcpy(this->ime,d.ime);
  53. this->vozrast=d.vozrast;
  54. this->trki=d.trki;
  55. this->vet=d.vet;
  56.  
  57. }
  58. friend ostream &operator<<(ostream &output,const Vozac &d)
  59. {
  60. output << d.ime << endl << d.vozrast << endl << d.trki << endl;
  61. if(d.vet) output << "VETERAN" << endl;
  62.  
  63. return output;
  64. }
  65. /*friend bool &operator==(const Vozac &a, const Vozac &b)
  66. {
  67. if(a.zarabotuvachka()==b.zarabotuvachka())
  68. return true;
  69. else
  70. return false;
  71. }*/
  72. ~Vozac(){}
  73.  
  74. virtual float zarabotuvachka()=0;
  75. virtual float danok()=0;
  76.  
  77. };
  78.  
  79. class Avtomobilist:public Vozac
  80. {
  81. private:
  82. float cena;
  83. public:
  84. Avtomobilist(char *ime="",int vozrast=0,int trki=0,bool vet=false,float cena=0):Vozac(ime,vozrast,trki,vet)
  85. {
  86. this->cena=cena;
  87. }
  88. ~Avtomobilist(){}
  89.  
  90. float zarabotuvachka()
  91. {
  92. return cena/5;
  93. }
  94. float danok()
  95. {
  96. if(trki>10)
  97. return zarabotuvachka()*0.15;
  98. else
  99. return zarabotuvachka()*0.10;
  100. }
  101. };
  102. class Motociklist:public Vozac
  103. {
  104. private:
  105. int moknost;
  106. public:
  107. Motociklist(char *ime="",int vozrast=0,int trki=0,bool vet=false,int moknost=0):Vozac(ime,vozrast,trki,vet)
  108. {
  109. this->moknost=moknost;
  110. }
  111. ~Motociklist(){}
  112.  
  113. float zarabotuvachka()
  114. {
  115. return moknost*20;
  116. }
  117. float danok()
  118. {
  119. if(vet)
  120. return zarabotuvachka()*0.25;
  121. else
  122. return zarabotuvachka()*0.20;
  123. }
  124. };
  125.  
  126. int soIstaZarabotuvachka(Vozac **vozaci, int golemina,Vozac *vozac)
  127. {
  128. int isti=0;
  129. for(int i=0;i<golemina;i++)
  130. {
  131. Vozac *tekoven = vozaci[i];
  132. if(tekoven->zarabotuvachka() == vozac->zarabotuvachka())
  133. isti++;
  134.  
  135. }
  136. return isti;
  137.  
  138. }
  139.  
  140.  
  141. int main()
  142. {
  143. int n, x;
  144. cin >> n >> x;
  145. Vozac **v = new Vozac*[n];
  146. char ime[100];
  147. int vozrast;
  148. int trki;
  149. bool vet;
  150. for(int i = 0; i < n; ++i) {
  151. cin >> ime >> vozrast >> trki >> vet;
  152. if(i < x) {
  153. float cena_avto;
  154. cin >> cena_avto;
  155. v[i] = new Avtomobilist(ime, vozrast, trki, vet, cena_avto);
  156. } else {
  157. int mokjnost;
  158. cin >> mokjnost;
  159. v[i] = new Motociklist(ime, vozrast, trki, vet, mokjnost);
  160. }
  161. }
  162. cout << "=== DANOK ===" << endl;
  163. for(int i = 0; i < n; ++i) {
  164. cout << *v[i];
  165. cout << v[i]->danok() << endl;
  166. }
  167. cin >> ime >> vozrast >> trki >> vet;
  168. int mokjnost;
  169. cin >> mokjnost;
  170. Vozac *vx = new Motociklist(ime, vozrast, trki, vet, mokjnost);
  171. cout << "=== VOZAC X ===" << endl;
  172. cout << *vx;
  173. cout << "=== SO ISTA ZARABOTUVACKA KAKO VOZAC X ===" << endl;
  174. cout << soIstaZarabotuvachka(v, n, vx);
  175. for(int i = 0; i < n; ++i) {
  176. delete v[i];
  177. }
  178. delete [] v;
  179. delete vx;
  180. return 0;
  181. return 0;
  182. }
Add Comment
Please, Sign In to add comment