Josif_tepe

Untitled

Sep 11th, 2025
341
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.75 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class Vagon {
  5. protected:
  6.     float tezina;
  7.     string ID;
  8.    
  9. public:
  10.     Vagon() {}
  11.     Vagon(float _tezina, string _ID) {
  12.         tezina = _tezina;
  13.         ID = _ID;
  14.     }
  15.     ~Vagon() {}
  16.    
  17.     float get_tezina() {
  18.         return tezina;
  19.     }
  20.    
  21.     string get_ID() {
  22.         return ID;
  23.     }
  24.    
  25.    
  26. };
  27. class Voz {
  28. protected:
  29.     string seriski_broj;
  30.     int br_vagoni;
  31.     Vagon * vagoni;
  32. public:
  33.     Voz() {}
  34.     Voz(string _seriski_broj, int _br_vagoni, Vagon * _vagoni) {
  35.         seriski_broj = _seriski_broj;
  36.         br_vagoni = _br_vagoni;
  37.         vagoni = new Vagon[br_vagoni];
  38.         vagoni = _vagoni;
  39.        
  40.     }
  41.     Voz(const Voz & tmp) {
  42.         seriski_broj = tmp.seriski_broj;
  43.         br_vagoni = tmp.br_vagoni;
  44.         vagoni = new Vagon[br_vagoni];
  45.         vagoni = tmp.vagoni;
  46.     }
  47.    
  48.     ~Voz() {}
  49.    
  50.     virtual float cena100() {
  51.         float tezina = 0.0;
  52.         for(int i = 0; i < br_vagoni; i++) {
  53.             tezina += vagoni[i].get_tezina();
  54.         }
  55.         return tezina / 1000.0;
  56.     }
  57.    
  58.     Voz & operator -- (int i) {
  59.         Vagon * new_vagon = new Vagon[br_vagoni - 1];
  60.         for(int i = 0; i < br_vagoni - 1; i++) {
  61.             new_vagon[i] = vagoni[i];
  62.         }
  63.        
  64.         br_vagoni--;
  65.         vagoni = new Vagon[br_vagoni];
  66.         vagoni = new_vagon;
  67.        
  68.         return * this;
  69.     }
  70.    
  71.     friend ostream & operator << (ostream  & stream , Voz & v);
  72.    
  73. };
  74. ostream & operator << (ostream  & stream , Voz & v) {
  75.     stream << v.seriski_broj << " " << v.br_vagoni;
  76.     for(int i = 0; i < v.br_vagoni; i++) {
  77.         stream << v.vagoni[i].get_tezina() << " " << v.vagoni[i].get_ID() << endl;
  78.     }
  79.     return stream;
  80. }
  81. class Dizel : public Voz {
  82. protected:
  83.     float osnovna_potrosuvacka;
  84.     float prosecna_cena;
  85.     float eko_taksa;
  86. public:
  87.     Dizel() : Voz() {}
  88.     Dizel(string _seriski_broj, int _br_vagoni, Vagon * _vagoni, float _osnovna_potrosuvacka, float _prosecna_cena, float _eko_taksa) : Voz(_seriski_broj, _br_vagoni, _vagoni) {
  89.         osnovna_potrosuvacka = _osnovna_potrosuvacka;
  90.         prosecna_cena = _prosecna_cena;
  91.         eko_taksa = _eko_taksa;
  92.     }
  93.    
  94.     Dizel(const Dizel & tmp) : Voz(tmp) {
  95.         osnovna_potrosuvacka = tmp.osnovna_potrosuvacka;
  96.         prosecna_cena = tmp.prosecna_cena;
  97.         eko_taksa = tmp.eko_taksa;
  98.     }
  99.    
  100.     ~Dizel() {}
  101.     virtual float cena100() override {
  102.         float cena = Voz::cena100();
  103.         cena += 0.05 * cena;
  104.         float res = eko_taksa + cena * prosecna_cena;
  105.         return res;
  106.     }
  107.    
  108.    
  109.    
  110. };
  111.  
  112. class Elektricni : public Voz {
  113. protected:
  114.     float osnovna_potrosuvacka;
  115.     float prosecna_cena;
  116. public:
  117.     Elektricni() : Voz() {}
  118.     Elektricni(string _seriski_broj, int _br_vagoni, Vagon * _vagoni, float _osnovna_potrosuvacka, float _prosecna_cena) : Voz(_seriski_broj, _br_vagoni, _vagoni) {
  119.         osnovna_potrosuvacka = _osnovna_potrosuvacka;
  120.         prosecna_cena = _prosecna_cena;
  121.     }
  122.     Elektricni(const Elektricni & tmp) : Voz(tmp) {
  123.         osnovna_potrosuvacka = tmp.osnovna_potrosuvacka;
  124.         prosecna_cena = tmp.prosecna_cena;
  125.     }
  126.     ~Elektricni() {}
  127.    
  128.     virtual float cena100() override {
  129.         float cena = Voz::cena100();
  130.         cena += 0.1 * cena;
  131.        
  132.         return cena * prosecna_cena;
  133.     }
  134. };
  135.  
  136. int najekonomicen(Voz ** vozovi, int n) {
  137.     float najmala_cena = vozovi[0]->cena100();
  138.     int idx = 0;
  139.    
  140.     for(int i = 0; i < n; i++) {
  141.         if(vozovi[i]->cena100() < najmala_cena) {
  142.             najmala_cena = vozovi[i]->cena100();
  143.             idx = i;
  144.         }
  145.     }
  146.     return idx;
  147. }
  148. int main() {
  149.    
  150.      return 0;
  151. }
  152.  
Advertisement
Add Comment
Please, Sign In to add comment