Advertisement
IlijaTrnkovski

Vozach

Sep 16th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.50 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. class Vozac
  8. {
  9. private:
  10. char *ime;
  11. int vozrast;
  12. int brTrki;
  13. bool daliVeteran;
  14. public:
  15. Vozac()
  16. {
  17. this->ime = new char[0];
  18. }
  19. Vozac(char *ime,int vozrast,int brTrki,bool daliVeteran)
  20. {
  21. this->ime = new char [strlen(ime)+1];
  22. strcpy(this->ime,ime);
  23. this->vozrast = vozrast;
  24. this->brTrki = brTrki;
  25. this->daliVeteran = daliVeteran;
  26. }
  27. Vozac(const Vozac &v)
  28. {
  29. this->ime = new char [strlen(v.ime)+1];
  30. strcpy(this->ime,v.ime);
  31. this->vozrast = v.vozrast;
  32. this->brTrki = v.brTrki;
  33. this->daliVeteran = v.daliVeteran;
  34. }
  35. Vozac& operator=(const Vozac &v)
  36. {
  37. if(this!=&v)
  38. {
  39. delete []ime;
  40. this->ime = new char [strlen(v.ime)+1];
  41. strcpy(this->ime,v.ime);
  42. this->vozrast = v.vozrast;
  43. this->brTrki = v.brTrki;
  44. this->daliVeteran = v.daliVeteran;
  45. }
  46. return *this;
  47. }
  48. friend ostream& operator<<(ostream &vraka, Vozac &v)
  49. {
  50. vraka<<v.ime<<endl;
  51. vraka<<v.vozrast<<endl;
  52. vraka<<v.brTrki<<endl;
  53. if(v.daliVeteran)
  54. {
  55. cout<<"VETERAN"<<endl;
  56. }
  57. return vraka;
  58. }
  59.  
  60. int getBrTrki()
  61. {
  62. return brTrki;
  63. }
  64.  
  65. bool getDaliVeteran()
  66. {
  67. return daliVeteran;
  68. }
  69.  
  70. virtual double danok() =0;//"cisto virtuelna fukncija" apstraktna funkcija (nema telo{}), klasata e apstraktna
  71. virtual double zarabotuvacka() =0;//"cisto virtuelna fukncija" apstraktna funkcija (nema telo{}), klasata e apstraktna
  72.  
  73.  
  74. bool operator==(Vozac &v)
  75. {
  76. return this->zarabotuvacka()==v.zarabotuvacka();
  77. }
  78. virtual ~Vozac()
  79. {
  80. delete []ime;
  81. }
  82.  
  83. };
  84.  
  85.  
  86. class Avtomobilist : public Vozac
  87. {
  88. private:
  89. double cenaAvtomobil;
  90. public:
  91. Avtomobilist(){}
  92. Avtomobilist(char *ime,int vozrast,int brTrki,bool daliVeteran,double cenaAvtomobil) : Vozac(ime,vozrast,brTrki,daliVeteran)
  93. {
  94. this->cenaAvtomobil = cenaAvtomobil;
  95. }
  96. Avtomobilist(const Vozac &v, double cenaAvtomobil) : Vozac(v)//ne e potrebno da se napise vo slucajov copy constructor
  97. {
  98. this->cenaAvtomobil = cenaAvtomobil;
  99. }
  100. double zarabotuvacka()
  101. {
  102. return cenaAvtomobil/5;
  103. }
  104. double danok()
  105. {
  106. if(getBrTrki() >10)
  107. {
  108. return zarabotuvacka()*15/100;
  109. }
  110. return zarabotuvacka()*10/100;
  111. }
  112. ~Avtomobilist(){}
  113. };
  114.  
  115. class Motociklist : public Vozac
  116. {
  117. private:
  118. int moknost;
  119. public:
  120. Motociklist(){}
  121. Motociklist(char *ime,int vozrast,int brTrki,bool daliVeteran,int moknost) : Vozac(ime,vozrast,brTrki,daliVeteran)
  122. {
  123. this->moknost = moknost;
  124. }
  125. Motociklist(const Vozac &v, int moknost) : Vozac(v)//ne e potrebno da se napise vo slucajov copy constructor
  126. {
  127. this->moknost = moknost;
  128. }
  129. double zarabotuvacka()
  130. {
  131. return moknost*20;
  132. }
  133. double danok()
  134. {
  135. if(getDaliVeteran())
  136. {
  137. return zarabotuvacka()*25/100;
  138. }
  139. return zarabotuvacka()*20/100;
  140. }
  141. ~Motociklist(){}
  142. };
  143.  
  144. int soIstaZarabotuvachka(Vozac **v,int n,Vozac *vozac)
  145. {
  146. int br=0;
  147. for(int i=0;i<n;i++)
  148. {
  149. if(v[i]->zarabotuvacka() == vozac->zarabotuvacka())
  150. br++;
  151. }
  152.  
  153. return br;
  154. }
  155. int main() {
  156.  
  157. int n, x;
  158. cin >> n >> x;
  159. Vozac **v = new Vozac*[n];
  160. char ime[100];
  161. int vozrast;
  162. int trki;
  163. bool vet;
  164. for(int i = 0; i < n; ++i) {
  165. cin >> ime >> vozrast >> trki >> vet;
  166. if(i < x) {
  167. float cena_avto;
  168. cin >> cena_avto;
  169. v[i] = new Avtomobilist(ime, vozrast, trki, vet, cena_avto);
  170. } else {
  171. int mokjnost;
  172. cin >> mokjnost;
  173. v[i] = new Motociklist(ime, vozrast, trki, vet, mokjnost);
  174. }
  175. }
  176. cout << "=== DANOK ===" << endl;
  177. for(int i = 0; i < n; ++i) {
  178. cout << *v[i];
  179. cout << v[i]->danok() << endl;
  180. }
  181. cin >> ime >> vozrast >> trki >> vet;
  182. int mokjnost;
  183. cin >> mokjnost;
  184. Vozac *vx = new Motociklist(ime, vozrast, trki, vet, mokjnost);
  185. cout << "=== VOZAC X ===" << endl;
  186. cout << *vx;
  187. cout << "=== SO ISTA ZARABOTUVACKA KAKO VOZAC X ===" << endl;
  188. cout << soIstaZarabotuvachka(v, n, vx);
  189. for(int i = 0; i < n; ++i) {
  190. delete v[i];
  191. }
  192. delete [] v;
  193. delete vx;
  194. return 0;
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement