博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
椭圆类——3 (类的复杂设计)
阅读量:5082 次
发布时间:2019-06-13

本文共 2989 字,大约阅读时间需要 9 分钟。

【问题描述】

(1)在前一周作业题(椭圆类——2)的基础上,增加一个Point类(点类),
包括私有成员横纵坐标x和y(均为int型),以及参数带默认值的构造函数Point(x=0,y=0);
(2)给Point类增加拷贝(复制)构造函数Point(Point& p);
(3)增加析构函数~Point();输出"Point xigou"以及待析构的点的横纵坐标。
(4)增加取横纵坐标值的函数int GetX(); int GetY();
(5)删除Ellipse类原来的四个数据成员,重新修改为 Point a,b;
(6)修改Ellipse原来的构造函数Ellipse(int x1,int y1,int x2,int y2);
注意使用冒号语法对组合成员进行构造,并在构造函数里输出“gouzao 1”和x1,y1,x2,y2的值。
(7)增加一个Ellipse类的构造函数Ellipse(Point &p1,Point &p2);
并在构造函数里输出“gouzao 2”和x1,y1,x2,y2的值。
(8)修改Ellipse的析构函数的输出内容为“Ellipse xigou”以及待析构对象的外切矩形右下角的横纵坐标。
(9)去掉Ellipse类的拷贝构造函数、Fun函数,并修改剩余函数里的错误。

【输入形式】

主函数:输入四个坐标点,用其初始化一个Ellipse对象e1。
输入两对坐标点,用其初始化2个Point对象p1和p2。
用p1和p2初始化一个新的Ellipse对象e2。
最后调用e1和e2的Show函数分别显示坐标,调用e1和e2的Area函数计算并输出。

【输出形式】

程序运行结果

【样例输入】

-3 1 3 -1
-3 2
3 -2

【样例输出】

gouzao 1 -3 1 3 -1
gouzao 2 -3 2 3 -2
-3 1 3 -1
-3 2 3 -2
9.4245
18.849
Ellipse xigou 3 -2
Point xigou 3 -2
Point xigou -3 2
Point xigou 3 -2
Point xigou -3 2
Ellipse xigou 3 -1
Point xigou 3 -1
Point xigou -3 1

#include 
#include
#include
using namespace std;class Point{
private: int p_x,p_y;public: //基本函数 Point(int x=0,int y=0);//参数带默认值的构造函数 Point(Point& p);//拷贝(复制)构造函数 ~Point();//析构函数 //功能函数 int GetX(){
return p_x;}//取横坐标值 int GetY(){
return p_y;}//取纵坐标值};Point::Point(int x,int y)//参数带默认值的构造函数{
p_x = x; p_y = y;}Point::Point(Point& p)//拷贝(复制)构造函数{
p_x = p.p_x; p_y = p.p_y;}Point::~Point()//析构函数{
cout << "Point xigou " << p_x << " " << p_y << endl;}class Ellipse{
private: Point a,b;public: //基础函数 Ellipse(int xx1,int yy1,int xx2,int yy2);//构造函数 Ellipse(Point &p1,Point &p2);//构造函数 ~Ellipse();//析构函数 //功能函数 double Area();//计算椭圆面积 int GetX1(){
return a.GetX();} int GetY1(){
return a.GetY();} int GetX2(){
return b.GetX();} int GetY2(){
return b.GetY();} void Show();//显示椭圆的外切矩形的顶点坐标};Ellipse::Ellipse(int xx1,int yy1,int xx2,int yy2):a(xx1,yy1),b(xx2,yy2){
cout << "gouzao 1 " << a.GetX() << " " << a.GetY() << " " << b.GetX() << " " << b.GetY() << endl;}Ellipse::Ellipse(Point &p1,Point &p2):a(p1),b(p2)//构造函数{
cout << "gouzao 2 " << a.GetX() << " " << a.GetY() << " " << b.GetX() << " " << b.GetY() << endl;}Ellipse::~Ellipse()//析构函数{
cout << "Ellipse xigou " << b.GetX() << " " << b.GetY() << endl;}double Ellipse::Area(){
return (double)( 3.1415 * fabs(b.GetX()-a.GetX()) * fabs(b.GetY()-a.GetY()) / 4 );}void Ellipse::Show()//显示椭圆的外切矩形的顶点坐标{
cout << a.GetX() << " " << a.GetY() << " " << b.GetX() << " " << b.GetY() << endl;}int main(){
int x1,y1,x2,y2,x3,y3,x4,y4; cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> x4 >> y4; Ellipse e1(x1,y1,x2,y2); Point p1(x3,y3); Point p2(x4,y4); Ellipse e2(p1,p2); e1.Show(); e2.Show(); cout << fixed << setprecision(4) << e1.Area() << endl; cout << fixed << setprecision(3) << e2.Area() << endl; return 0;}

转载于:https://www.cnblogs.com/yuzilan/p/10626152.html

你可能感兴趣的文章
用 Go 编写一个简单的 WebSocket 推送服务
查看>>
Struts2通配符的使用
查看>>
《数据结构与算法分析:C语言描述》复习——第三章“线性表、栈和队列”——单向链表...
查看>>
APP版本升级
查看>>
Scalaz(2)- 基础篇:随意多态-typeclass, ad-hoc polymorphism
查看>>
c语言之 malloc函数详解
查看>>
JSP连接SQLServer2014(NetBeans + tomcat)
查看>>
layer弹出层框架alert与msg详解
查看>>
1005. Maximize Sum Of Array After K Negations
查看>>
自定义流水号。
查看>>
.Net下的进程间的通讯 -- Windows消息队列
查看>>
Linux下c开发 之 线程通信(转)
查看>>
时间复杂度分析
查看>>
Java 传递参数时,传递一个变量快还是传递一个实体类?
查看>>
解释器模式
查看>>
mysql增加字段,修改字段,增加索引等语句
查看>>
使用Charles进行网络请求抓包解析
查看>>
配置MySQL主从复制和读写分离
查看>>
STM32的bulk双缓冲传输速度的讨论,硬件的坑永远填不完
查看>>
有序数组寻找中位数以及寻找K大元素
查看>>