程序题(c++)

1. (程序题)

几何形体处理程序: 输入若干个几何形体的参数,

要求按面积排序输出。输出时要指明形状。

Input:

第一行是几何形体数目n(不超过100).下面有n行,每行以一个字符串s开头.

若 s 是 ‘Rectangle’,则代表一个矩形,本行后面跟着两个整数,分别是矩形的宽和高;

若 s 是 ‘Circle’,则代表一个圆,本行后面跟着一个整数代表其半径,π取3.14

若 s 是 ‘Triangle’,则代表一个三角形,本行后面跟着三个整数,代表三条边的长度

Output:

按面积从小到大依次输出每个几何形体的种类及面积。每行一个几何形体,输出格式为:

形体名称:面积

说明,若面积为小数,则四舍五入保留2位小数

Sample Input:

3

Rectangle 3 5

Circle 9

Triangle 3 4 5

Sample Output

Triangle:6

Rectangle:15

Circle:254.34

#include"iostream"
#include"math.h"
using namespace std;
#define pi 3.14
class all
{
	public:
	virtual void print()=0;
	virtual double MianJi()=0;
 } ;

class Triangle:public all
{
public:
	double x;
	double y;
	double z;
	virtual void print();
	virtual double MianJi();
};

void Triangle::print()
{
	cout<<"Triangle:"<<MianJi()<<endl;
}
double Triangle::MianJi()
{
	double p = ( x+ y + z) / 2.0;
	return sqrt(p * ( p - x)*(p- y)*(p - z));
}

class Rectangle:public all
{
public:
	double x;
	double y;
	virtual void print();
	virtual double MianJi();
};
void Rectangle::print()
{
	cout<<"Rectangle:"<<MianJi()<<endl;
}
double Rectangle::MianJi()
{
	return x*y;
}

class Circle:public all
{
public:
	double r;
	virtual void print();
	virtual double MianJi();
};
void Circle::print()
{
	cout<<"Circle:"<<MianJi()<<endl;
}
double Circle::MianJi()
{
   return pi*r*r;
}
void qort(all* a[],int n)
{
	int i=0,k=0;
	for(i=0;i<n-1;i++)
	{
		for(k=i+1;k<n;k++)
		{
			if(a[i]->MianJi()>a[k]->MianJi())
			{
				all* temp;
				temp=a[i];
				a[i]=a[k];
				a[k]=temp;
			}
		}
	}
}
int main()
{
	int n;
	string s;
	all* A[100];
	Triangle* Tr;
	Rectangle* Re;
	Circle* Ci;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		        cin>>s;
		        if(s=="Triangle")
		        {
		        	Tr=new Triangle();
			        cin>>Tr->x>>Tr->y>>Tr->z;
			        A[i]=Tr;
				} 
				if(s=="Rectangle")
			    {
			     	Re=new Rectangle();
				    cin>>Re->x>>Re->y;
				    A[i]=Re;
				}
			    if(s=="Circle")
			    {
			    	Ci=new Circle();
				    cin>>Ci->r; 
				    A[i]=Ci;
				}
				
		
	}
	qort(A,n);
	for(int i=0;i<n;i++)
	{
		A[i]->print();
	 } 
	return 0;
}

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘家奕_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值