Advertisement
Filip_Markoski

RealEstate (Working)

Apr 19th, 2017
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.35 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. class RealEstate {
  6. protected:
  7.     char *address;
  8.     int area;
  9.     int price_sqm;
  10. public:
  11.     //RealEstate(){ address = NULL; }
  12.     ~RealEstate(){ delete [] address; }    
  13.     // Regular Constructor
  14.     RealEstate(const char *addr = "", int a = 0, int p = 0){
  15.         address = new char[strlen(addr) + 1];
  16.         strcpy(address, addr);
  17.         area = a;
  18.         price_sqm = p;
  19.     }
  20.     // Assignment Operator
  21.     RealEstate &operator = (const RealEstate &r){
  22.         if(this == &r) { return *this; }
  23.         delete [] address;
  24.         address = new char[strlen(r.address) + 1];
  25.         strcpy(address, r.address);
  26.         area = r.area;
  27.         price_sqm = r.price_sqm;
  28.         return *this;
  29.     }
  30.     // Copy Constructor
  31.     RealEstate(const RealEstate &r){
  32.         address = new char[strlen(r.address) + 1];
  33.         strcpy(address, r.address);
  34.         area = r.area;
  35.         price_sqm = r.price_sqm;
  36.     }
  37.    
  38.     int price() {
  39.         return price_sqm * area;
  40.     }
  41.    
  42.     void print(){
  43.         cout << address << ", Kvadratura: " << area << ", Cena po Kvadrat: " << price_sqm;
  44.         cout << endl;
  45.     }
  46.    
  47.     float estateTax() { return 0.05 * price(); }
  48.    
  49.     friend istream& operator >> (istream &in, RealEstate &r){
  50.         in >> r.address >> r.area >> r.price_sqm;
  51.         return in;
  52.     }
  53.    
  54.     const char* getAddress() { return address; }
  55. };
  56.  
  57. class Villa : public RealEstate {
  58. private:
  59.     int luxury;
  60. public:
  61.     Villa(const char *addr = "", int a = 0, int p = 0, int l = 0){
  62.         RealEstate::RealEstate(addr, a, p);
  63.         luxury = l;
  64.     }
  65.        
  66.     void print(){
  67.         cout << address << ", Kvadratura: " << area << ", Cena po Kvadrat: " << price_sqm;
  68.         cout << ", Danok na luksuz: " << luxury << endl;
  69.     }
  70.    
  71.     float estateTax() { return (0.05 * price()) + ((price() * luxury) / 100); }
  72.    
  73.     friend istream& operator >> (istream &in, Villa &v){
  74.         in >> v.address >> v.area >> v.price_sqm >> v.luxury;
  75.         return in;
  76.     }
  77. };
  78.  
  79. int main(){
  80.     RealEstate re;
  81.     Villa v;
  82.     cin >> re;
  83.     cin >> v;
  84.     re.print();
  85.     cout << "Danok za: " << re.getAddress() << ", e: " << re.estateTax() << endl;
  86.     v.print();
  87.     cout << "Danok za: " << v.getAddress() << ", e: " << v.estateTax() << endl;
  88.     return 0;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement