C++计算几种几何图形的面积

#include <iostream>
#include<cstring>
#include<stdlib.h>
#include<stdio.h> 
using namespace std;
class Shape{
	public:
		virtual double Area() const =0;
};
class Triangle:public Shape{
	public:
		Triangle(double h,double w){
			H=h;
			W=w;
		}
		double Area() const {
			return H*W*0.5;
		}
	private:
		double H,W;
};
class Rectangle:public Shape{
	public:
		Rectangle(double h,double w){
			H=h;
			W=w;
		}
		double Area() const {
			return H*W;
		}
	private:
		double H,W;
};
class Circle:public Shape{
	public:
		Circle(double r){
			radius=r;
		}
		double Area() const {
			return radius*radius*3.1415;
		}
	private:
		double radius;
};
class Trapezoid:public Shape{
	public:
		Trapezoid(double top,double bottom,double high){
			T=top;
			B=bottom;
			H=high;
		}
		double Area() const {
			return (T+B)*H*0.5;
		}
	private:
		double T,B,H;
};
class Squre:public Shape{
	public:
		Squre(double side){
			S=side;
		}
		double Area() const {
			return S*S;
		}
	private:
		double S;
};
class Application{
	public:
		double Compute(Shape *s[],int n){
			double sum=0;
			for(int i=0;i<n;i++) {
				sum+=s[i]->Area();
			}
			return sum;
		}
};
class MyProgram:public Application{
	public:
		MyProgram();
		~MyProgram();
		double Run();
	private:
		Shape * *s; 
};
MyProgram::MyProgram(){
	s=new Shape*[2];
	s[0]=new Triangle(3,4);
	s[1]=new Trapezoid(2,3,1);
}
MyProgram::~MyProgram(){
	for(int i=0;i<2;i++){
		delete s[i];
	}
	delete[] s;
}
double MyProgram::Run(){
	double sum=Compute(s,5);
	return sum;
}
int main(){
	cout<<MyProgram().Run()<<endl;
}

版权声明:本文为hahadelaochao原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。