Advertisement
mrbearp

transport

May 21st, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.79 KB | None | 0 0
  1. // вашиот код треба да биде тука
  2. #include <iostream>
  3. #include <cstring>
  4. using namespace std;
  5.  
  6. class Transport {
  7. public:
  8. char ime[15];
  9. int cena, km;
  10. public:
  11. Transport(char *_ime, int c, int k) {
  12. strcpy(ime, _ime);
  13. cena = c;
  14. km = k;
  15. }
  16. virtual int cenaTransport() = 0;
  17. virtual bool operator >(Transport &) = 0;
  18. char * getIme() {
  19. return ime;
  20. }
  21. int getKm() {
  22. return km;
  23. }
  24. virtual ~Transport(){}
  25. };
  26.  
  27. class AvtomobilTransport :public Transport {
  28. private:
  29. bool sofer;
  30. public:
  31. AvtomobilTransport(char *_ime, int c, int k, bool s) :Transport(_ime, c, k) {
  32. sofer = s;
  33. }
  34. int cenaTransport(){
  35. if (sofer) {
  36. return (cena + (cena*0.2));
  37. }
  38. else return cena;
  39. }
  40. bool operator > (Transport &a) {
  41. if (km > a.km) {
  42. return km;
  43. }
  44. else return a.km;
  45. }
  46.  
  47. };
  48.  
  49. class KombeTransport :public Transport {
  50. private:
  51. int brLuge;
  52. public:
  53. KombeTransport(char *_ime, int c, int k, int br) :Transport(_ime, c, k) {
  54. brLuge = br;
  55. }
  56. int cenaTransport() {
  57. //cena = cena - (brLuge*200);
  58. //cout<<"Cena= "<<cena << " Broj na Luge= "<<brLuge<<endl;
  59. return (cena - (brLuge*200));
  60.  
  61. }
  62. bool operator > (Transport &a) {
  63. if (km > a.km) {
  64. return km;
  65. }
  66. else return a.km;
  67. }
  68. };
  69.  
  70. void pecatiPoloshiPonudi(Transport **p, int n, AvtomobilTransport t) {
  71. int j=0;
  72. Transport **pom;
  73. pom = new Transport *[n];
  74. for (int i=0; i < n; i++) {
  75. if ((p[i])->cenaTransport() > t.cenaTransport()) {
  76. pom[j] = p[i];
  77. j++;
  78. // cout<<"i="<<i<<" "<<endl;
  79. }
  80. }
  81. for (int i = 0; i < j; i++) {
  82. for (int k = 0; k < j - 1; k++) {
  83. if (pom[k]->cenaTransport() > pom[k + 1]->cenaTransport()) {
  84. Transport *pom1 = pom[k + 1];
  85. pom[k + 1] = pom[k];
  86. pom[k] = pom1;
  87. }
  88. }
  89. }
  90. //cout<<"pred for"<<" j="<<j<<endl;
  91. for (int i = 0; i < j; i++) {
  92. //cout<<"Vo for"<<endl;
  93. //pom[i]->cenaTransport();
  94. cout << (pom[i])->getIme() << " " << (pom[i])->getKm() << " " << (pom[i])->cenaTransport() << endl;
  95. }
  96.  
  97. }
  98.  
  99. // вашиот код треба да биде тука
  100.  
  101. int main() {
  102.  
  103. char destinacija[20];
  104. int tip, cena, rastojanie, lugje;
  105. bool shofer;
  106. int n;
  107. cin >> n;
  108. Transport **ponudi;
  109. ponudi = new Transport *[n];
  110.  
  111. for (int i = 0; i<n; i++) {
  112.  
  113. cin >> tip >> destinacija >> cena >> rastojanie;
  114. if (tip == 1) {
  115. cin >> shofer;
  116. ponudi[i] = new AvtomobilTransport(destinacija, cena, rastojanie, shofer);
  117.  
  118. }
  119. else {
  120. cin >> lugje;
  121. //cout<<"lugje= "<<lugje<<endl;
  122. ponudi[i] = new KombeTransport(destinacija, cena, rastojanie, lugje);
  123. }
  124.  
  125.  
  126. }
  127.  
  128. AvtomobilTransport nov("Ohrid", 2000, 600, false);
  129. pecatiPoloshiPonudi(ponudi, n, nov);
  130.  
  131. for (int i = 0; i<n; i++) delete ponudi[i];
  132. delete[] ponudi;
  133. return 0;
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement