P2 别墅造价几何?

P2 别墅造价几何?

时间: 1ms        内存:128M

描述:

宇宙房产开发有限公司要盖一批圆顶的别墅,现要编制一个程序,计算别墅土建部分的造价。
为简化起见,只计算别墅房顶、墙面和柱子的价格。房顶每平方米的价格为3000元、墙面每平方米2000元、每根柱子10000元。
要求输入每栋别墅的房顶半径、墙面高度和柱子数,能计算出单栋别墅的造价,进而计算出多栋别墅的造价和。
请在begin和end之间定义完成任务需要的类House,并提交这一部分程序,
#include <iostream>
#include <iomanip>
using namespace std;
const int roofPrice = 3000; //房顶每平方米的价格
const int wallPrice = 2000;//墙面每平方米的价格
const int pillarPrice = 10000; //每根柱子的价格
const double PI = 3.1415926;
//************* begin *****************
class House
{
private:
    double radius;   //房顶半径
    double height;   //房高
    int pillars;     //柱子数
};
//************* end *****************
int main( )
{
    House houses[10];
    int n,i;
    double r, h, p;
    cin>>n;         //要盖n栋别墅
    double sum = 0;
    for(i=0; i<n; i++)
    {
        cin>>r>>h>>p;      //分别表示别墅的房顶半径、墙高、柱子数
        houses[i].setData(r,h,p);   
        sum+=houses[i].getPrice();   //求出第i栋别墅造价并累加
    }
    cout <<setiosflags(ios::fixed)<<setprecision(2);
    cout<<"Total price: " << sum << endl;   //输出总造价
    return 0;
}

输入:

别墅数量(不超过10栋)
每栋别墅的房顶半径、墙面高度、和柱子数

输出:

多栋别墅的造价和,小数点后保留2位小数

示例输入:

3
6.4 3 1
10.5 3.2 4
8.4 4.25 0

示例输出:

Total price: 3252256.75

提示:

参考答案(内存最优[1268]):

#include <iostream>
#include <iomanip>
using namespace std;

const int roofPrice = 3000; //房顶每平方米的价格
const int wallPrice = 2000;//墙面每平方米的价格
const int pillarPrice = 10000; //每根柱子的价格
//************* begin *****************
const double PI = 3.1415926;
class House
{
public:
    void setData(double r, double h, int p)
    {
        radius = r;
        height = h;
        pillars = p;
    }
    double getPrice()
    {
        float a, s;
        a=PI*radius*radius*roofPrice;
        s=2*PI*radius*height*wallPrice;
        return (a+s+pillars*pillarPrice);
    }
private:
    double radius;   //房顶半径
    double height;   //房高
    int pillars;     //柱子数
};
//************* end *****************
int main( )
{
    House houses[10];
    int n,i;
    double r, h, p;
    cin>>n;         //要盖n栋别墅
    double sum = 0;
    for(i=0; i<n; i++)
    {
        cin>>r>>h>>p;      //分别表示别墅的房顶半径、墙高、柱子数
        houses[i].setData(r,h,p);   
        sum+=houses[i].getPrice();   //求出第i栋别墅造价并累加
    }
    cout <<setiosflags(ios::fixed)<<setprecision(2);
    cout<<"Total price: " << sum << endl;   //输出总造价
    return 0;
}

参考答案(时间最优[0]):

#include <iostream>
#include <iomanip>
using namespace std;

const int roofPrice = 3000; //房顶每平方米的价格
const int wallPrice = 2000;//墙面每平方米的价格
const int pillarPrice = 10000; //每根柱子的价格
//************* begin *****************
const double PI = 3.1415926;
class House
{
public:
    void setData(double r, double h, int p)
    {
        radius = r;
        height = h;
        pillars = p;
    }
    double getPrice()
    {
        float a, s;
        a=PI*radius*radius*roofPrice;
        s=2*PI*radius*height*wallPrice;
        return (a+s+pillars*pillarPrice);
    }
private:
    double radius;   //房顶半径
    double height;   //房高
    int pillars;     //柱子数
};
//************* end *****************
int main( )
{
    House houses[10];
    int n,i;
    double r, h, p;
    cin>>n;         //要盖n栋别墅
    double sum = 0;
    for(i=0; i<n; i++)
    {
        cin>>r>>h>>p;      //分别表示别墅的房顶半径、墙高、柱子数
        houses[i].setData(r,h,p);   
        sum+=houses[i].getPrice();   //求出第i栋别墅造价并累加
    }
    cout <<setiosflags(ios::fixed)<<setprecision(2);
    cout<<"Total price: " << sum << endl;   //输出总造价
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注