设计一个正方形类,其中包括边长一个属性,包括构造函数,析构函数,求面积的成员函数和求周长的成员函数,通过正方形类定义2个正方形对象,并求建设一个下图所示的活动场地的费用。(用户输入中间草坪场地的边长)

设计一个正方形类,其中包括边长一个属性,包括构造函数,析构函数,求面积的成员函数和求周长的成员函数,通过正方形类定义2个正方形对象,并求建设一个下图所示的活动场地的费用。

如下图所示的活动场地。中间要铺设草坪,四周要铺设塑胶跑道,最外围要安装栅栏。
在这里插入图片描述

已知大正方向和小正方形边长相差6米,它们的中心是重合的。草坪的造价是每平方米150,塑胶跑道的造价是每平方米70, 栅栏的造价是每米100。用户输入中间草坪场地的边长,设计程序自动计算整个活动场地的造价。
以下是代码
方法一:

#include <iostream>
#include <bits.h>
using namespace std;
class square
{
private:
	
	int length1, length2;

public:
	square(int Side1, int Side2);
	square(const square& rec);

	~square();

	int Area1()
	{
		return length1 * length1;
	}
	int Area2()
	{
		return length2 * length2;
	}
	int Perimeter1()
	{
		return 4 * length1;
	}
	int Perimeter2()
	{
		return 4 * length2;
	}
	int RunwayArea()
	{
		return Area1() - Area2();
	}
	int LawnCosta()
	{
		return 150 * Area2();
	}
	int RunwayCost()
	{
		return 70 * RunwayArea();
	}
	int FenceCost()
	{
		return 100 * Perimeter1();
	}
	int TotalCost()
	{
		return LawnCosta() + RunwayCost() + FenceCost();
	}
};

square::square(int Side1, int Side2)
{
	this->length1 = Side1;
	this->length2 = Side2;
}

square::square(const square& rec)
{
	this->length1 = rec.length1;
	this->length2 = rec.length2;
}

square::~square()
{
}

int main()
{
	int Side2=0;
	std::cout << "请输入中间草坪场地的边长:" << endl;
	std::cin >> Side2;
	int Side1 = Side2 + 6;
	square re = square(Side1,Side2);
	std::cout << "总造价为:" << std::endl;
	std::cout << re.TotalCost() << std::endl;
}

以10为例输入程序中输出结果为:
在这里插入图片描述
方法二:

#include <iostream>
#include <bits.h>
using namespace std;
class square1
{
private:

	int Sidelength1;

public:
	square1(int l);
	square1(const square1& in_rec);

	~square1();

	int Area()
	{
		return Sidelength1 * Sidelength1;
	}
	 
	int Perimeter()
	{
		return 4 * Sidelength1;
	}
};
square1::square1(int l)
{
	this->Sidelength1 = l;
}

square1::square1(const square1& in_rec)
{
	this->Sidelength1 = in_rec.Sidelength1;
}

square1::~square1()
{
}
class square2
{
private:

	int Sidelength2;

public:
	square2(int w);
	square2(const square2& rec);

	~square2();

	int Area()
	{
		return Sidelength2 * Sidelength2;
	}

	int Perimeter()
	{
		return 4 * Sidelength2;
	}
};
square2::square2(int w)
{
	this->Sidelength2 = w;
}

square2::square2(const square2& rec)
{
	this->Sidelength2 = rec.Sidelength2;
}

square2::~square2()
{
}

int main()
{
	int w = 0;
	std::cout << "请输入中间草坪场地的边长:" << endl;
	std::cin >> w;
	int l = w + 6;
	square1 re = square1(l);
	square2 re2 = square2(w);
	std::cout << "总造价为:" << std::endl;
	std::cout << 150*re2.Area()+100* re.Perimeter()+70*(re.Area()- re2.Area()) <<endl;
}

以20为例输入程序中输出结果为:
在这里插入图片描述
方法一必比方法二容易理解一些两种方法很类似你可以选其一种作为参考。
希望以上内容可以帮助得到你!

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值