Advertisement
add1ctus

4. Properties

May 15th, 2015
272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.81 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cstring>
  4. using namespace std;
  5.  
  6. class Property
  7. {
  8. protected:
  9.     char address[50];
  10.     char city[50];
  11.     float area;
  12. public:
  13.     Property(){}
  14.     Property(char *a, char *c, float f)
  15.     {
  16.         strcpy(address,a);
  17.         strcpy(city,c);
  18.         area=f;
  19.     }
  20.     virtual float price()=0;
  21.     friend ostream &operator<<(ostream &output, Property &rhs)
  22.     {
  23.         output<<"Address: "<<rhs.address<<endl;
  24.         output<<"City: "<<rhs.city<<endl;
  25.         output<<rhs.area<<" square meters"<<endl;
  26.         return output;
  27.     }
  28.     bool operator< (Property &rhs)
  29.     {
  30.         return price()<rhs.price();
  31.     }
  32. };
  33.  
  34. class House:public Property
  35. {
  36.     int numFloors;
  37.     float floorArea;
  38.     bool hasRoof;
  39. public:
  40.     House(){}
  41.     House(char *a, char *g, float kvad, int br_kat, float kvadrat_kat, bool potkrovje):Property(a,g,kvad)
  42.     {
  43.         numFloors=br_kat;
  44.         floorArea=kvadrat_kat;
  45.         hasRoof=potkrovje;
  46.     }
  47.     float price()
  48.     {
  49.         return numFloors*floorArea*700+((hasRoof)?floorArea*450:0);
  50.     }
  51. };
  52.  
  53. class Building:public Property
  54. {
  55.     float apartmentArea;
  56.     int apartmentNumber;
  57. public:
  58.     Building(){}
  59.     Building(char *a, char*g, float kvad, int br_st, float kv):Property(a,g,kvad)
  60.     {
  61.         apartmentNumber=br_st;
  62.         apartmentArea=kv;
  63.     }
  64.     float price()
  65.     {
  66.         return apartmentArea*800*apartmentNumber+apartmentNumber*500;
  67.     }
  68. };
  69.  
  70. void mostExpensiveProperty(Property **arr, int n)
  71. {
  72.     float highestPrice=arr[0]->price();
  73.     int id=0;
  74.     for(int i=1;i<n;i++)
  75.     {
  76.         if(arr[i]->price()>highestPrice)
  77.         {
  78.             highestPrice=arr[i]->price();
  79.             id=i;
  80.         }
  81.     }
  82.     cout<<*arr[id];
  83. }
  84.  
  85. int main() {
  86.     int n;
  87.     int tip_nedviznost;
  88.  
  89.     cin >> n;
  90.  
  91.     Property **ned = new Property*[n];
  92.     char adresa[100];
  93.     char grad[30] ;
  94.     float kvadratura;
  95.     for(int i = 0; i < n; ++i) {
  96.         cin >> tip_nedviznost>> adresa >> grad >> kvadratura;
  97.         if(tip_nedviznost==1) {
  98.             int br_kat;
  99.             float kvadrat_kat;
  100.             bool potkrovje;
  101.             cin >> br_kat >> kvadrat_kat >> potkrovje;
  102.             ned[i] = new House(adresa, grad, kvadratura, br_kat, kvadrat_kat, potkrovje);
  103.         }
  104.         else if(tip_nedviznost == 2) {
  105.             int br_stanovi;
  106.             float kvadrat_na_stan;
  107.             cin >> br_stanovi >> kvadrat_na_stan;
  108.  
  109.             ned[i] = new Building(adresa, grad, kvadratura, br_stanovi, kvadrat_na_stan);
  110.         }
  111.     }
  112.  
  113.     cout<<"== PROPERTIES =="<<endl;
  114.     for (int i=0; i<n; i++){
  115.         cout<<*(ned[i])<<"Price: "<< ned[i]->price()<<endl;
  116.     }
  117.  
  118.     cout << "=== MOST EXPENSIVE PROPERTY ===" << endl;
  119.     mostExpensiveProperty(ned, n);
  120.  
  121.     return 0;
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement