#include<iostream> #include<iomanip> #define PI 3.14159f using namespace std; class shape { public: shape() {} ~shape() {} virtual float s() { return 0; }; }; class circle :public shape { private: float r; public: circle(float a) { r = a; } ~circle() {} float s() { return PI*r*r; } }; class square :public shape { private: float l; public: square(float a) { l = a; } ~square() {} float s() { return l*l; } }; class rectangle :public shape { private: float l, w; public: rectangle(float a, float b) { l = a; w = b; } ~rectangle() {} float s() { return l * w; }; }; class trapezoid :public shape { private: float o, d, h; public: trapezoid(float a, float b, float c) { o = a; d = b; h = c; } ~trapezoid() {} float s() { return (o+d)*h/2; } }; class triangle :public shape { private: float l, h; public: triangle(float a, float b) { l = a; h = b; } ~triangle() {} float s() { return l*h / 2; } }; int main() { shape* p[5]; int i; float a[9]; float S; for (i = 0; i < 9; i++) { cin >> a[i]; } circle c1(a[0]); square s1(a[1]); rectangle r1(a[2], a[3]); trapezoid tr1(a[4], a[5], a[6]); triangle t1(a[7], a[8]); p[0] = &c1; p[1] = &s1; p[2] = &r1; p[3] = &tr1; p[4] = &t1; S = p[0]->s() + p[1]->s() + p[2]->s() + p[3]->s() + p[4]->s(); cout <<setprecision(6)<< S; return 0; }
#include<iostream> using namespace std; #include<cmath> //2017final函数模板 class Point { public: //构造函数赋初值 Point(double a, double b, double c) :m_x(a), m_y(b), m_z(c) {} //把重载函数声明为类的友元,可以访问类中的私有元素 //也可以不声明友元,直接把那三个坐标写到public 里面 friend double operator -(Point p1, Point p2); private: double m_x; double m_y; double m_z; }; //重载减号(-) double operator -(Point p1, Point p2) { //空间内两点求距离 //sqrt计算开方 //pow double pow(double x, double y) 返回 x 的 y 次幂. //p1.m_x - p2.m_x, 2.0) 返回两数差的2次方 return sqrt(pow(p1.m_x - p2.m_x, 2.0) + pow(p1.m_y - p2.m_y, 2.0) + pow(p1.m_z - p2.m_z, 2.0)); } //间距模板 template<class T1 , class T2> double Distance(T1 a, T2 b) { return abs(a - b); //返回距离的绝对值 } int main() { int n; //元素类型变量 cin >> n; while (n!=0) { if (n == 1) //整型元素 { int a, b; cin >> a >> b; cout << Distance(a, b) << endl; //调用模板函数,输出两点之间的距离 } if (n == 2) //浮点型数据 { float a, b; cin >> a >> b; cout << Distance(a, b) << endl; } if (n == 3) //point 类型 { double a1, b1, c1, a2, b2, c2; cin >> a1 >> b1 >> c1 >> a2 >> b2 >> c2; Point p1(a1, b1, c1); Point p2(a2, b2, c2); cout <<Distance(p1, p2) << endl; } cin >> n; //输入0跳出while循环 } return 0; }
标签:return,23,double,float,Point,shape,2023,public From: https://www.cnblogs.com/xuxingkai/p/17426262.html