Advertisement
LegoDrifter

dsdsds

May 17th, 2020
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.65 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4. class Vozilo{
  5. protected:
  6. float masa;
  7. int shirina;
  8. int visina;
  9. public:
  10. Vozilo(float masa=0.0,int shirina=0,int visina=0)
  11. {
  12. this->masa=masa;
  13. this->shirina=shirina;
  14. this->visina=visina;
  15. }
  16. virtual int vratiDnevnaCena() = 0;
  17. float get_masa()
  18. {
  19. return masa;
  20. }
  21. int get_shirina() {
  22. return shirina;
  23. }
  24. Vozilo(const Vozilo &v) {
  25. this->masa = v.masa;
  26. this->shirina = v.shirina;
  27. this-> visina = v.visina;
  28. }
  29. virtual int getType() = 0;
  30. };
  31. class Avtomobil:public Vozilo{
  32. private:
  33. int brVrati;
  34. public:
  35. Avtomobil(float masa=0.0,int shirina=0,int visina=0,int brVrati=0)
  36. :Vozilo(masa,shirina,visina)
  37. {
  38. this->brVrati=brVrati;
  39. }
  40. int vratiDnevnaCena()
  41. {
  42. if(brVrati<5)
  43. {
  44. return 100;
  45. }
  46. else return 130;
  47. }
  48. int getType()
  49. {
  50. return 1;
  51. }
  52. Avtomobil (const Avtomobil &at) : Vozilo (at) {
  53. this->brVrati = at.brVrati;
  54. }
  55. };
  56. class Avtobus:public Vozilo{
  57. private:
  58. int brPatnici;
  59. public:
  60. Avtobus(float masa=0.0,int shirina=0,int visina=0,int brPatnici=0)
  61. :Vozilo(masa,shirina,visina)
  62. {
  63. this->brPatnici=brPatnici;
  64. }
  65. int vratiDnevnaCena()
  66. {
  67. return brPatnici*5;
  68. }
  69. int getType()
  70. {
  71. return 2;
  72. }
  73. Avtobus(const Avtobus &av) : Vozilo (av) {
  74. this->brPatnici = brPatnici;
  75. }
  76. };
  77. class Kamion:public Vozilo{
  78. private:
  79. float maxM;
  80. public:
  81. Kamion(float masa=0.0,int shirina=0,int visina=0, float maxM=0.0)
  82. :Vozilo(masa,shirina,visina)
  83. {
  84. this->maxM=maxM;
  85. }
  86. int vratiDnevnaCena()
  87. {
  88. return (masa+maxM)*0.02;
  89. }
  90. int getType()
  91. {
  92. return 3;
  93. }
  94. float get_maxM()
  95. {
  96. return maxM;
  97. }
  98. Kamion (const Kamion &k) : Vozilo(k) {
  99. this->maxM = k.maxM;
  100. }
  101. };
  102. class ParkingPlac {
  103. private:
  104. Vozilo **niza;
  105. int n;
  106. public:
  107. ParkingPlac(){
  108. this-> niza = new Vozilo * [0];
  109. this-> n = 0;
  110. }
  111. ParkingPlac(Vozilo **niza,int n)
  112. {
  113. niza = new Vozilo*[n];
  114. for(int i =0;i < n;i++)
  115. this->niza[i]=niza[i];
  116. this->n=n;
  117. }
  118. ParkingPlac(const ParkingPlac &pp)
  119. {
  120. this-> n = pp.n;
  121. this-> niza = new Vozilo*[pp.n];
  122. for(int i=0;i<n;i++)
  123. niza[i]=pp.niza[i];
  124. }
  125. ParkingPlac &operator +=(Vozilo *voz) {//операторот += за додавање на ново возило
  126. Vozilo ** tmp = new Vozilo * [n+1];
  127. for(int i=0; i <n; i++) {
  128. tmp[i] = niza[i];
  129. }
  130. tmp[n++] = voz;
  131. // delete [] v;
  132. niza = tmp;
  133. return *this;
  134. }
  135. float presmetajVkupnaMasa()
  136. {
  137. float vkM=0;
  138. for(int i=0;i<n;i++)
  139. vkM+=niza[i]->get_masa();
  140. return vkM;
  141. }
  142. int brojVozilaPoshirokiOd(int length)
  143. {
  144. int poShiroki=0;
  145. for(int i=0;i<n;i++)
  146. {
  147. if(length<niza[i]->get_shirina())
  148. poShiroki++;
  149. }
  150. return poShiroki;
  151. }
  152. void pecati () { //функција void pecati() со која се печати:
  153. int koli=0, jsp=0, kamionc=0;
  154. for(int i=0;i<n;i++){
  155. Avtomobil* a=dynamic_cast<Avtomobil*>(niza[i]);
  156. if (a!=0) koli++;
  157. Avtobus* b=dynamic_cast<Avtobus*>(niza[i]);
  158. if (b!=0) jsp++;
  159. Kamion* k=dynamic_cast<Kamion*>(niza[i]);
  160. if (k!=0) kamionc++;
  161. }
  162. cout<<"Brojot na avtomobili e "<<koli;
  163. cout<<", brojot na avtobusi e "<<jsp;
  164. cout<<" i brojot na kamioni e "<<kamionc<<"."<<endl;
  165. }
  166. int pogolemaNosivostOd (Vozilo &vi) { //функција int pogolemaNosivostOd(Vozilo &v)
  167. Kamion * k;
  168. int counter=0;
  169. for(int i=0; i <n; i++) {
  170. if( (k = dynamic_cast <Kamion *> (niza[i])) ) {
  171. if(k->get_masa() > vi.get_masa())
  172. counter++;
  173. }
  174. }
  175. return counter;
  176. }
  177. int vratiDnevnaZarabotka()
  178. {
  179. int total=0;
  180. for(int i=0;i<n;i++)
  181. total = total + niza[i]->vratiDnevnaCena();
  182. return total;
  183. }
  184. ~ParkingPlac()
  185. {
  186. // delete [] niza;
  187. }
  188. };
  189. //вашиот код треба да биде тука
  190.  
  191. int main(){
  192. ParkingPlac p;
  193.  
  194. int n;
  195. cin>>n;
  196. int shirina,visina, broj;
  197. float masa,nosivost;
  198. for (int i=0;i<n;i++){
  199. int type;
  200. cin>>type;
  201. if(type==1){
  202. cin>>masa>>shirina>>visina>>broj;
  203. Avtomobil *a=new Avtomobil(masa,shirina,visina,broj);
  204. p+=a;
  205. }
  206. if(type==2){
  207. cin>>masa>>shirina>>visina>>broj;
  208. p+=new Avtobus(masa,shirina,visina,broj);
  209. }
  210. if(type==3){
  211. cin>>masa>>shirina>>visina>>nosivost;
  212. p+=new Kamion(masa,shirina,visina,nosivost);
  213. }
  214. }
  215. p.pecati();
  216. cout<<"\nZarabotkata e "<<p.vratiDnevnaZarabotka()<<endl;
  217. cout<<"Vkupnata masa e "<<p.presmetajVkupnaMasa()<<endl;
  218. cout<<"Brojot poshiroki od 5 e "<<p.brojVozilaPoshirokiOd(5)<<endl;
  219. Avtomobil a(1200,4,3,5);
  220. cout<<"Brojot na kamioni so nosivost pogolema od avtomobilot e "<<p.pogolemaNosivostOd(a)<<endl;
  221. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement