Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Vagon {
- protected:
- float tezina;
- string ID;
- public:
- Vagon() {}
- Vagon(float _tezina, string _ID) {
- tezina = _tezina;
- ID = _ID;
- }
- ~Vagon() {}
- float get_tezina() {
- return tezina;
- }
- string get_ID() {
- return ID;
- }
- };
- class Voz {
- protected:
- string seriski_broj;
- int br_vagoni;
- Vagon * vagoni;
- public:
- Voz() {}
- Voz(string _seriski_broj, int _br_vagoni, Vagon * _vagoni) {
- seriski_broj = _seriski_broj;
- br_vagoni = _br_vagoni;
- vagoni = new Vagon[br_vagoni];
- vagoni = _vagoni;
- }
- Voz(const Voz & tmp) {
- seriski_broj = tmp.seriski_broj;
- br_vagoni = tmp.br_vagoni;
- vagoni = new Vagon[br_vagoni];
- vagoni = tmp.vagoni;
- }
- ~Voz() {}
- virtual float cena100() {
- float tezina = 0.0;
- for(int i = 0; i < br_vagoni; i++) {
- tezina += vagoni[i].get_tezina();
- }
- return tezina / 1000.0;
- }
- Voz & operator -- (int i) {
- Vagon * new_vagon = new Vagon[br_vagoni - 1];
- for(int i = 0; i < br_vagoni - 1; i++) {
- new_vagon[i] = vagoni[i];
- }
- br_vagoni--;
- vagoni = new Vagon[br_vagoni];
- vagoni = new_vagon;
- return * this;
- }
- friend ostream & operator << (ostream & stream , Voz & v);
- };
- ostream & operator << (ostream & stream , Voz & v) {
- stream << v.seriski_broj << " " << v.br_vagoni;
- for(int i = 0; i < v.br_vagoni; i++) {
- stream << v.vagoni[i].get_tezina() << " " << v.vagoni[i].get_ID() << endl;
- }
- return stream;
- }
- class Dizel : public Voz {
- protected:
- float osnovna_potrosuvacka;
- float prosecna_cena;
- float eko_taksa;
- public:
- Dizel() : Voz() {}
- Dizel(string _seriski_broj, int _br_vagoni, Vagon * _vagoni, float _osnovna_potrosuvacka, float _prosecna_cena, float _eko_taksa) : Voz(_seriski_broj, _br_vagoni, _vagoni) {
- osnovna_potrosuvacka = _osnovna_potrosuvacka;
- prosecna_cena = _prosecna_cena;
- eko_taksa = _eko_taksa;
- }
- Dizel(const Dizel & tmp) : Voz(tmp) {
- osnovna_potrosuvacka = tmp.osnovna_potrosuvacka;
- prosecna_cena = tmp.prosecna_cena;
- eko_taksa = tmp.eko_taksa;
- }
- ~Dizel() {}
- virtual float cena100() override {
- float cena = Voz::cena100();
- cena += 0.05 * cena;
- float res = eko_taksa + cena * prosecna_cena;
- return res;
- }
- };
- class Elektricni : public Voz {
- protected:
- float osnovna_potrosuvacka;
- float prosecna_cena;
- public:
- Elektricni() : Voz() {}
- Elektricni(string _seriski_broj, int _br_vagoni, Vagon * _vagoni, float _osnovna_potrosuvacka, float _prosecna_cena) : Voz(_seriski_broj, _br_vagoni, _vagoni) {
- osnovna_potrosuvacka = _osnovna_potrosuvacka;
- prosecna_cena = _prosecna_cena;
- }
- Elektricni(const Elektricni & tmp) : Voz(tmp) {
- osnovna_potrosuvacka = tmp.osnovna_potrosuvacka;
- prosecna_cena = tmp.prosecna_cena;
- }
- ~Elektricni() {}
- virtual float cena100() override {
- float cena = Voz::cena100();
- cena += 0.1 * cena;
- return cena * prosecna_cena;
- }
- };
- int najekonomicen(Voz ** vozovi, int n) {
- float najmala_cena = vozovi[0]->cena100();
- int idx = 0;
- for(int i = 0; i < n; i++) {
- if(vozovi[i]->cena100() < najmala_cena) {
- najmala_cena = vozovi[i]->cena100();
- idx = i;
- }
- }
- return idx;
- }
- int main() {
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment