Advertisement
add1ctus

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

Jun 13th, 2015
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.42 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cstring>
  4.  
  5. using namespace std;
  6.  
  7. class Nedviznost
  8. {
  9. protected:
  10.     char adresa[100];
  11.     char grad[30];
  12.     float kvadratura;
  13. public:
  14.     Nedviznost(){}
  15.     Nedviznost(char *a, char *g, float k)
  16.     {
  17.         strcpy(adresa,a);
  18.         strcpy(grad,g);
  19.         kvadratura=k;
  20.     }
  21.     virtual float cena()=0;
  22.     friend ostream &operator<<(ostream &out, Nedviznost &rhs)
  23.     {
  24.         out<<"Adresa: "<<rhs.adresa<<endl;
  25.         out<<"Grad:" <<rhs.grad<<endl;
  26.         out<<rhs.kvadratura<<" kvadrati"<<endl;
  27.         out<<"Cena: "<<rhs.cena()<<endl;
  28.         return out;
  29.     }
  30.     bool operator<(Nedviznost &rhs)
  31.     {
  32.         return this->cena()<rhs.cena();
  33.     }
  34. };
  35.  
  36. class Kukja:public Nedviznost
  37. {
  38.     int brKatovi;
  39.     float kvadraturaNaKat;
  40.     bool imaPotkrovje;
  41. public:
  42.     Kukja(){}
  43.     Kukja(char *a, char *g, float k, int b, float knk, bool ip):Nedviznost(a,g,k)
  44.     {
  45.         brKatovi=b;
  46.         kvadraturaNaKat=knk;
  47.         imaPotkrovje=ip;
  48.     }
  49.     float cena()
  50.     {
  51.         return (brKatovi*kvadraturaNaKat)*700 + (kvadratura-kvadraturaNaKat)*200;
  52.     }
  53. };
  54.  
  55. class Zgrada:public Nedviznost
  56. {
  57.     float kvadraturaStan;
  58.     int brStanovi;
  59. public:
  60.     Zgrada(){}
  61.     Zgrada(char *a, char *g, float k, int b, int ks):Nedviznost(a,g,k)
  62.     {
  63.         kvadraturaStan=ks;
  64.         brStanovi=b;
  65.     }
  66.     float cena()
  67.     {
  68.         return (kvadraturaStan*800)*brStanovi+brStanovi*500;
  69.     }
  70. };
  71.  
  72. class Stovariste:public Nedviznost
  73. {
  74.     float pokrienaKvadratura;
  75.     bool imaKancelarija;
  76. public:
  77.     Stovariste(){}
  78.     Stovariste(char *a, char *g, float k, float pk, bool ik):Nedviznost(a,g,k)
  79.     {
  80.         pokrienaKvadratura=pk;
  81.         imaKancelarija=ik;
  82.     }
  83.     float cena()
  84.     {
  85.         return (pokrienaKvadratura*250+(kvadratura-pokrienaKvadratura)*100)*(imaKancelarija)?1.1:1;
  86.     }
  87. };
  88.  
  89. Nedviznost &najskap_imot(Nedviznost **niza, int n)
  90. {
  91.     int najskap=0;
  92.     for(int i=1;i<n;i++)
  93.         if(*niza[najskap]<*niza[i])
  94.             najskap=i;
  95.     return *niza[najskap];
  96. }
  97.  
  98. int main() {
  99.     int n; // Broj na nedviznosti
  100.  
  101.     int tip_nedviznost; // Tip na nedviznost (1-kukja, 2-zgrada, 3-stovariste)
  102.  
  103.     cin >> n;
  104.  
  105.     Nedviznost **ned = new Nedviznost*[n];
  106.     char adresa[100];
  107.     char grad[30] ;
  108.     float kvadratura;
  109.     for(int i = 0; i < n; ++i) {
  110.         cin >> tip_nedviznost>> adresa >> grad >> kvadratura;
  111.         if(tip_nedviznost==1) {
  112.             int br_kat;
  113.             float kvadrat_kat;
  114.             bool potkrovje;
  115.             cin >> br_kat >> kvadrat_kat >> potkrovje;
  116.             ned[i] = new Kukja(adresa, grad, kvadratura, br_kat, kvadrat_kat, potkrovje);
  117.         }
  118.         else if(tip_nedviznost == 2) {
  119.             int br_stanovi;
  120.             float kvadrat_na_stan;
  121.             cin >> br_stanovi >> kvadrat_na_stan;
  122.  
  123.             ned[i] = new Zgrada(adresa, grad, kvadratura, br_stanovi, kvadrat_na_stan);
  124.         }
  125.         else if(tip_nedviznost == 3){
  126.             float kvadrati_pokrien_del;
  127.             bool kancelarija;
  128.             cin >>kvadrati_pokrien_del >> kancelarija;
  129.  
  130.             ned[i]= new Stovariste(adresa, grad, kvadratura, kvadrati_pokrien_del,kancelarija);
  131.         }
  132.     }
  133.  
  134.     cout<<"== IMOTI =="<<endl;
  135.     for (int i=0; i<n; i++){
  136.         cout<<*(ned[i])<<endl;
  137.     }
  138.  
  139.     cout << "=== NAJSKAP IMOT ===" << endl;
  140.     cout << najskap_imot(ned, n);
  141.  
  142.     return 0;
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement