Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <cstring>
- using namespace std;
- class Property
- {
- protected:
- char address[50];
- char city[50];
- float area;
- public:
- Property(){}
- Property(char *a, char *c, float f)
- {
- strcpy(address,a);
- strcpy(city,c);
- area=f;
- }
- virtual float price()=0;
- friend ostream &operator<<(ostream &output, Property &rhs)
- {
- output<<"Address: "<<rhs.address<<endl;
- output<<"City: "<<rhs.city<<endl;
- output<<rhs.area<<" square meters"<<endl;
- return output;
- }
- bool operator< (Property &rhs)
- {
- return price()<rhs.price();
- }
- };
- class House:public Property
- {
- int numFloors;
- float floorArea;
- bool hasRoof;
- public:
- House(){}
- House(char *a, char *g, float kvad, int br_kat, float kvadrat_kat, bool potkrovje):Property(a,g,kvad)
- {
- numFloors=br_kat;
- floorArea=kvadrat_kat;
- hasRoof=potkrovje;
- }
- float price()
- {
- return numFloors*floorArea*700+((hasRoof)?floorArea*450:0);
- }
- };
- class Building:public Property
- {
- float apartmentArea;
- int apartmentNumber;
- public:
- Building(){}
- Building(char *a, char*g, float kvad, int br_st, float kv):Property(a,g,kvad)
- {
- apartmentNumber=br_st;
- apartmentArea=kv;
- }
- float price()
- {
- return apartmentArea*800*apartmentNumber+apartmentNumber*500;
- }
- };
- void mostExpensiveProperty(Property **arr, int n)
- {
- float highestPrice=arr[0]->price();
- int id=0;
- for(int i=1;i<n;i++)
- {
- if(arr[i]->price()>highestPrice)
- {
- highestPrice=arr[i]->price();
- id=i;
- }
- }
- cout<<*arr[id];
- }
- int main() {
- int n;
- int tip_nedviznost;
- cin >> n;
- Property **ned = new Property*[n];
- char adresa[100];
- char grad[30] ;
- float kvadratura;
- for(int i = 0; i < n; ++i) {
- cin >> tip_nedviznost>> adresa >> grad >> kvadratura;
- if(tip_nedviznost==1) {
- int br_kat;
- float kvadrat_kat;
- bool potkrovje;
- cin >> br_kat >> kvadrat_kat >> potkrovje;
- ned[i] = new House(adresa, grad, kvadratura, br_kat, kvadrat_kat, potkrovje);
- }
- else if(tip_nedviznost == 2) {
- int br_stanovi;
- float kvadrat_na_stan;
- cin >> br_stanovi >> kvadrat_na_stan;
- ned[i] = new Building(adresa, grad, kvadratura, br_stanovi, kvadrat_na_stan);
- }
- }
- cout<<"== PROPERTIES =="<<endl;
- for (int i=0; i<n; i++){
- cout<<*(ned[i])<<"Price: "<< ned[i]->price()<<endl;
- }
- cout << "=== MOST EXPENSIVE PROPERTY ===" << endl;
- mostExpensiveProperty(ned, n);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement