Advertisement
add1ctus

6. Наследување

May 15th, 2015
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.08 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cstring>
  4.  
  5. using namespace std;
  6.  
  7. class Brod
  8. {
  9. protected:
  10.     char ime[100];
  11.     char drzava[30];
  12.     float kvadratura;
  13. public:
  14.     Brod(){}
  15.     Brod(char *i, char *d, float f)
  16.     {
  17.         strcpy(ime,i);
  18.         strcpy(drzava,d);
  19.         kvadratura=f;
  20.     }
  21.     virtual float cena()=0;
  22.     friend ostream &operator<<(ostream &output, Brod &rhs)
  23.     {
  24.         output<<"Ime: "<<rhs.ime<<endl;
  25.         output<<"Drzava: "<<rhs.drzava<<endl;
  26.         output<<"Kvadrati: "<<rhs.kvadratura<<endl;
  27.         output<<"Cena: "<<rhs.cena()<<endl;
  28.         return output;
  29.     }
  30.     bool operator>(Brod &rhs)
  31.     {
  32.         return this->cena()>rhs.cena();
  33.     }
  34. };
  35.  
  36. class Jahta:public Brod
  37. {
  38.     int brojNaPalubi;
  39.     int brojNaMotori;
  40. public:
  41.     Jahta(){}
  42.     Jahta(char *i, char *d, float k, int br, int brm):Brod(i,d,k)
  43.     {
  44.         brojNaPalubi=br;
  45.         brojNaMotori=brm;
  46.     }
  47.     float cena()
  48.     {
  49.         return kvadratura*700+brojNaMotori*20000+brojNaPalubi*4500;
  50.     }
  51. };
  52.  
  53. class Krstosuvac:public Brod
  54. {
  55.     float kvadraturaNaKabina;
  56.     int brojNaKabini;
  57. public:
  58.     Krstosuvac(){}
  59.     Krstosuvac(char *i, char *d, float k, float kv, int br):Brod(i,d,k)
  60.     {
  61.         kvadraturaNaKabina=kv;
  62.         brojNaKabini=br;
  63.     }
  64.     float cena()
  65.     {
  66.         return kvadraturaNaKabina*900*brojNaKabini;
  67.     }
  68. };
  69.  
  70. class Tanker:public Brod
  71. {
  72.     float volumen;
  73.     int ekipaz;
  74. public:
  75.     Tanker(){}
  76.     Tanker(char *i, char *d, float k, float vo, int ek):Brod(i,d,k)
  77.     {
  78.         volumen=vo;
  79.         ekipaz=ek;
  80.     }
  81.     float cena()
  82.     {
  83.         return volumen*500+ekipaz*3000;
  84.     }
  85. };
  86.  
  87. Brod &najskap_brod(Brod **brodovi, int n)
  88. {
  89.     int id=0;
  90.     for(int i=1;i<n;i++)
  91.         if(*brodovi[i]>*brodovi[id])
  92.             id=i;
  93.     return *brodovi[n-1];
  94. }
  95.  
  96. int main() {
  97.     int n; // Broj na brodovi
  98.  
  99.     int tip_brod; // Tip na Brod (1-Jahta, 2-Krstosuvac, 3-Tanker)
  100.  
  101.     cin >> n;
  102.  
  103.     Brod **brodovi = new Brod*[n];
  104.     char ime[100];
  105.     char drzava[30] ;
  106.     float kvadratura;
  107.     for(int i = 0; i < n; ++i) {
  108.         cin >> tip_brod>> ime >> drzava >> kvadratura;
  109.         if(tip_brod==1) {
  110.             int br_palubi;
  111.             int broj_motori;
  112.             cin >> br_palubi >> broj_motori;
  113.             brodovi[i] = new Jahta(ime, drzava, kvadratura, br_palubi, broj_motori);
  114.         }
  115.         else if(tip_brod == 2) {
  116.             int br_kabini;
  117.             float kvadrat_na_kabina;
  118.             cin >> br_kabini >> kvadrat_na_kabina;
  119.  
  120.             brodovi[i] = new Krstosuvac (ime, drzava, kvadratura, br_kabini, kvadrat_na_kabina);
  121.         }
  122.         else if(tip_brod == 3){
  123.             float volumen;
  124.             int br_ekipaz;
  125.             cin >>volumen >> br_ekipaz;
  126.  
  127.             brodovi[i]= new Tanker (ime, drzava, kvadratura, volumen, br_ekipaz);
  128.         }
  129.     }
  130.  
  131.     cout<<"== BRODOVI =="<<endl;
  132.     for (int i=0; i<n; i++){
  133.         cout<<*(brodovi[i])<<endl;
  134.     }
  135.  
  136.     cout << "=== NAJSKAP BROD ===" << endl;
  137.     cout << najskap_brod(brodovi, n);
  138.  
  139.     return 0;
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement