上课写的
Feng Gor是著名的房地产商,她每天的主要工作就是——数钱。这并不是一件容易的事,Feng Gor主要投资两类地,一类是圆的,一类是方的。现在你作为她的会计,需要帮她数钱。
Circle类和Square类继承于Land类,分别代表圆的地和方的地,其投资收入根据单位面积价格(price)和地的面积(根据边长或半径算出)决定。
Accountant类用于计算Feng Gor开发各种房地产带来的收入。其中DevelopEstate函数接收一个Land的指针,计算并累加开发这块房地产带来的收入(这里用到了动态绑定哦)。CheckMoney函数返回当前的收入。
`#include<cmath>
class Land{
public:
virtual double landprice()=0;
};
class Circle:public Land{
private:
double radius,price1;
public:
Circle(double radius_,double price1_):radius(radius_),price1(price1_){}
double landprice ()override{
double reward1=0;
double area1=0;
area1=radius*radius*acos(-1);
reward1=area1*price1;
return reward1;
}
};
class Square:public Land{
private:
double length,price2;
public:
Square(double length_,double price2_):length(length_),price2(price2_){}
double landprice ()override{
double reward2=0;
double area2=0;
area2=length*length*acos(-1);
reward2=area2*price2;
return reward2;
}
};
class Accountant{
private:
Land* land;
double reward;
public:
Accountant(){
reward=0;
}
void DevelopEstate(Land* land1){
reward+=land1->landprice();
}
double CheckMoney(){
DevelopEstate(land);
return reward;
}
};
#include <iostream>
#include <iomanip>
#include "source.h"
using namespace std;
int main(int argc, const char *argv[]) {
Accountant py;
double r,len;
int price1,price2;
cin>>r>>price1>>len>>price2;
Circle *a = new Circle(r, price1); //第一个参数为半径,第二个参数为单位面积价格
Square *b = new Square(len, price2); //第一个参数为边长,第二个参数为单位面积价格
py.DevelopEstate(a);
cout << setprecision(10) << py.CheckMoney() << endl;
py.DevelopEstate(b);
cout << setprecision(10) << py.CheckMoney() << endl;
return 0;
}