Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- // вашиот код треба да биде тука
- class Transport {
- protected:
- char destinacija[20];
- int osnovna_cena;
- int rastojanie;
- public:
- Transport(const char* destinacija = "", const int osnovna_cena = 0, const int rastojanie = 0) {
- strcpy(this->destinacija, destinacija);
- this->rastojanie = rastojanie;
- this->osnovna_cena = osnovna_cena;
- }
- bool operator<(const Transport& obj) {
- return rastojanie < obj.rastojanie;
- }
- virtual int cenaTransport() { return osnovna_cena; }
- // getters
- const char* getDestinacija() const { return destinacija; }
- const int getOsnovnaCena() const { return osnovna_cena; }
- const int getRastojanie() const { return rastojanie; }
- // setters
- void setDestinacija(const char* dest) { strcpy(destinacija, dest); }
- void setOsnovnaCena(const int cena) { osnovna_cena = cena; }
- void setRastojanie(const int rast) { rastojanie = rast; }
- virtual ~Transport() {}
- };
- class AvtomobilTransport : public Transport {
- bool platen_shofer;
- public:
- AvtomobilTransport(const char* destinacija, const int osnovna_cena, const int rastojanie,const bool platen_shofer = false)
- : Transport(destinacija, osnovna_cena, rastojanie) {
- this->platen_shofer = platen_shofer;
- }
- int cenaTransport() {
- if(platen_shofer) {
- return Transport::cenaTransport() * 1.20;
- }
- return Transport::cenaTransport();
- }
- const bool getPlatenShofer() const { return platen_shofer; }
- void setPlatenShofer(const bool pl_shof) { platen_shofer = pl_shof; }
- ~AvtomobilTransport() {}
- };
- class KombeTransport : public Transport {
- int patnici;
- public:
- KombeTransport(const char* destinacija, const int osnovna_cena, const int rastojanie,const int patnici = 0)
- : Transport(destinacija, osnovna_cena, rastojanie) {
- this->patnici = patnici;
- }
- int cenaTransport() {
- return Transport::cenaTransport() - (patnici * 200);
- }
- const int getPatnici() const { return patnici; }
- void setPatnici(const int patn) { patnici = patn; }
- ~KombeTransport() {}
- };
- void sortirajPonudi(Transport** ponudi, int n) {
- for(int i = 0; i < n; ++i) {
- for(int j = 0; j < n - 1 - i; ++j) {
- if(ponudi[i]->getRastojanie() > ponudi[i+1]->getRastojanie()) {
- Transport* t = ponudi[i];
- ponudi[i] = ponudi[i+1];
- ponudi[i+1] = t;
- }
- }
- }
- }
- void pecatiPoloshiPonudi(Transport** ponudi, int n, Transport& t) {
- sortirajPonudi(ponudi, n);
- for(int i = 0; i < n; ++i) {
- if(ponudi[i]->cenaTransport() > t.cenaTransport()) {
- cout << ponudi[i]->getDestinacija() << " " << ponudi[i]->getRastojanie() << " " << ponudi[i]->cenaTransport() << endl;
- }
- }
- }
- int main(){
- char destinacija[20];
- int tip,cena,rastojanie,lugje;
- bool shofer;
- int n;
- cin>>n;
- Transport **ponudi;
- ponudi=new Transport *[n];
- for (int i=0;i<n;i++){
- cin>>tip>>destinacija>>cena>>rastojanie;
- if (tip==1) {
- cin>>shofer;
- ponudi[i]=new AvtomobilTransport(destinacija,cena,rastojanie,shofer);
- }
- else {
- cin>>lugje;
- ponudi[i]=new KombeTransport(destinacija,cena,rastojanie,lugje);
- }
- }
- AvtomobilTransport nov("Ohrid",2000,600,false);
- pecatiPoloshiPonudi(ponudi,n,nov);
- for (int i=0;i<n;i++) delete ponudi[i];
- delete [] ponudi;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement