C++ 椭圆类
题目描述设计并测试一个名为Ellipse的椭圆类:(1)其私有数据成员为外切矩形的左上角与右下角两个点的坐标(4个int型x1,y1,x2,y2)(2)声明4个公有的成员函数分别访问椭圆的外切矩形的顶点坐标(3)设计1个构造函数Ellipse(int,int,int,int)对椭圆的外切矩形的顶点坐标赋值(4)设计1个公有成员函数Area()计算椭圆的面积。输入描述在主函数里输入顶点坐标,并声明一
椭圆类——1
题目描述
设计并测试一个名为Ellipse的椭圆类:
(1)其私有数据成员为外切矩形的左上角与右下角两个点的坐标(4个int型x1,y1,x2,y2)
(2)声明4个公有的成员函数分别访问椭圆的外切矩形的顶点坐标
(3)设计1个构造函数Ellipse(int,int,int,int)对椭圆的外切矩形的顶点坐标赋值
(4)设计1个公有成员函数Area()计算椭圆的面积。
输入描述
在主函数里输入顶点坐标,并声明一个Ellipse类的对象。
输出描述
在主函数里调用该对象的成员函数输出外切矩形的顶点坐标,计算并输出椭圆的面积。(保留2位小数)
输入样例
-3 1 3 -1
输出样例
-3 1 3 -1
9.42
程序代码:
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
/*
自定义一个求绝对值的函数
*/
int absolute_value(int num1){
if(num1 >= 0){
return num1;
}else{
return -num1;
}
}
// 定义一个类; class 为创建类的关键字
class Ellipse{ //定义一个类名
//(1)其私有数据成员为外切矩形的左上角与右下角两个点的坐标(4个int型x1,y1,x2,y2)
private: //访问控制符 访问权限 private 修饰的属性,只能在该类中被访问
int x1;
int y1;
int x2;
int y2;
double ellipse_area;
public: // 声明公共方法
Ellipse();
Ellipse(int new_x1, int new_y1, int new_x2, int new_y2);
int getX1();
int getY1();
int getX2();
int getY2();
void area();
};
// 成员函数定义,包括构造函数
Ellipse::Ellipse(void){
}
// (3)设计1个构造函数Ellipse(int,int,int,int)对椭圆的外切矩形的顶点坐标赋值
Ellipse::Ellipse(int new_x1, int new_y1, int new_x2, int new_y2)
{
x1 = new_x1;
y1 = new_y1;
x2 = new_x2;
y2 = new_y2;
}
// (2)声明4个公有的成员函数分别访问椭圆的外切矩形的顶点坐标
int Ellipse::getX1(){
return x1;
}
int Ellipse::getX2(){
return x2;
}
int Ellipse::getY1(){
return y1;
}
int Ellipse::getY2(){
return y2;
}
// (4)设计1个公有成员函数Area()计算椭圆的面积。
void Ellipse::area(){
ellipse_area = (double)( 3.1415 * absolute_value(x2 - x1) * absolute_value(y2 - y1) / 4 ); // 椭圆面积公式:s=π*a*b(其中a、b是半长轴)
cout << fixed << setprecision(2) << ellipse_area << endl; // 计算并输出椭圆的面积。(保留2位小数)
}
/*
setprecision是一个计算机函数,功能是控制输出流显示浮点数的有效数字个数,如果和fixed合用的话,可以控制小数点后面有几位。
*/
int main(void){ //主函数
int x1;
int y1;
int x2;
int y2;
cin >> x1 >> y1 >> x2 >> y2; // 输入 椭圆的外切矩形的顶点坐标
Ellipse ellipse(x1, y1, x2, y2); // 实例化创建一个 Ellipse 对象
cout << ellipse.getX1() << " " << ellipse.getY1() << " " << ellipse.getX2() << " " << ellipse.getY2() << endl; // 输出外切矩形的顶点坐标
ellipse.area(); //调用该对象的成员函数 输出椭圆的面积。
}
椭圆类——2
题目描述
(1)拷贝(复制)构造函数的实现。在第1题的基础上,增加一个拷贝构造函数。函数原型格式:Ellipse(const Ellipse & e);
(2)增加Show()函数,显示椭圆的外切矩形的顶点坐标。
(3)增加一个成员函数Fun(int y),将椭圆外切矩形的左上角和右下角的纵坐标分别加y和减y。
(4)增加析构函数,在析构函数中输出“xigou”以及待析构对象的外切矩形左上角的横纵坐标。
输入描述
在主函数中输入顶点坐标后创建一个对象,并用该对象作为初始值再创建一个新对象。输入一个值,用于修改新对象的外切矩形的纵坐标。
输出描述
在主函数里调用这2个对象的Show函数分别输出外切矩形的顶点坐标,调用Area函数分别计算并输出椭圆的面积(保留2位小数)。接收修改值y后,调用Fun函数修改新对象的纵坐标。重新计算新对象的面积并输出。
输入样例
-3 1 3 -1
1
输出样例
-3 1 3 -1
-3 1 3 -1
9.42
9.42
18.85
xigou -3 2
xigou -3 1
程序代码
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
/*
自定义一个求绝对值的函数
*/
int absolute_value(int num1){
if(num1 >= 0){
return num1;
}else{
return -num1;
}
}
// 定义一个类; class 为创建类的关键字
class Ellipse{ //定义一个类名
//其私有数据成员为外切矩形的左上角与右下角两个点的坐标(4个int型x1,y1,x2,y2)
private: //访问控制符 访问权限 private 修饰的属性,只能在该类中被访问
int x1;
int y1;
int x2;
int y2;
double ellipse_area;
public: // 声明公共方法
Ellipse();
Ellipse(int new_x1, int new_y1, int new_x2, int new_y2);
Ellipse(const Ellipse & e);
~Ellipse();
int getX1();
int getY1();
int getX2();
int getY2();
void area();
void show();
void fun(int y);
};
// 成员方法定义,包括构造方法
Ellipse::Ellipse(void){
}
// 设计1个构造方法Ellipse(int,int,int,int)对椭圆的外切矩形的顶点坐标赋值
Ellipse::Ellipse(int new_x1, int new_y1, int new_x2, int new_y2)
{
x1 = new_x1;
y1 = new_y1;
x2 = new_x2;
y2 = new_y2;
}
// (1)拷贝(复制)构造方法的实现。在第1题的基础上,增加一个拷贝构造方法。方法原型格式:Ellipse(const Ellipse & e);
Ellipse::Ellipse(const Ellipse & e)
{
x1 = e.x1;
x2 = e.x2;
y1 = e.y1;
y2 = e.y2;
}
// (4)增加析构方法,在析构方法中输出“xigou”以及待析构对象的外切矩形左上角的横纵坐标
Ellipse::~Ellipse(){
cout<<"xigou "<<x1<<" "<<y1<<endl;
}
// 声明4个公有的成员方法分别访问椭圆的外切矩形的顶点坐标
int Ellipse::getX1(){
return x1;
}
int Ellipse::getX2(){
return x2;
}
int Ellipse::getY1(){
return y1;
}
int Ellipse::getY2(){
return y2;
}
// 设计1个公有成员方法Area()计算椭圆的面积。
void Ellipse::area(){
ellipse_area = (double)( 3.1415 * absolute_value(x2 - x1) * absolute_value(y2 - y1) / 4 ); // 椭圆面积公式:s=π*a*b(其中a、b是半长轴)
cout << fixed << setprecision(2) << ellipse_area << endl; // 计算并输出椭圆的面积。(保留2位小数)
}
/*
setprecision是一个计算机函数,功能是控制输出流显示浮点数的有效数字个数,如果和fixed合用的话,可以控制小数点后面有几位。
*/
// (2)增加Show()函数,显示椭圆的外切矩形的顶点坐标
void Ellipse::show(){
cout << x1 << " " << y1 << " " << x2 << " " << y2 << endl; // 输出外切矩形的顶点坐标
}
// (3)增加一个成员函数Fun(int y),将椭圆外切矩形的左上角和右下角的纵坐标分别加y和减y。
void Ellipse::fun(int y){
y1 += y;
y2 -= y;
}
int main(void){ //主函数
int x1;
int y1;
int x2;
int y2;
int y;
cin >> x1 >> y1 >> x2 >> y2; // 输入 椭圆的外切矩形的顶点坐标
cin >> y; // 输入 要修改的y值
Ellipse ellipse(x1, y1, x2, y2); // 实例化创建一个 Ellipse 对象
Ellipse ellipse2 = ellipse;
ellipse.show(); // 调用Show方法分别输出外切矩形的顶点坐标
ellipse2.show(); // 调用Show方法分别输出外切矩形的顶点坐标
ellipse.area(); //调用该对象的成员方法 输出椭圆的面积。
ellipse2.area(); //调用该对象的成员方法 输出椭圆的面积。
ellipse2.fun(y); // 调用Fun方法修改新对象的纵坐标
ellipse2.area(); //重新计算新对象的面积并输出。
}
椭圆类——3
题目描述
(1)在第2题的基础上,增加一个Point类(点类),包括私有成员横纵坐标x和y(均为int型),以及参数带默认值的构造函数Point(x=0,y=0);
(2)给Point类增加拷贝(复制)构造函数Point(Point& p);
(3)修改析构函数~Point();不输出任何内容
(4)增加取横纵坐标值的函数int GetX(); int GetY();
(5)删除Ellipse类原来的四个数据成员,重新修改为 Point a,b;
(6)修改Ellipse原来的构造函数Ellipse(int x1,int y1,int x2,int y2);注意使用冒号语法对组合成员进行构造。
(7)增加一个Ellipse类的构造函数Ellipse(Point& a,Point& b);
(8)修改Ellipse的析构函数,不输出任何内容
输入描述
主函数:输入四个坐标点,用其初始化一个Ellipse对象e1。输入两对坐标点,用其初始化2个Point对象p1和p2。用p1和p2初始化一个新的Ellipse对象e2。
输出描述
调用e1和e2的Show函数分别显示坐标,调用e1和e2的Area函数计算并输出。
输入样例
-3 1 3 -1
-3 2
3 -2
输出样例
-3 1 3 -1
-3 2 3 -2
9.42
18.85
程序代码:
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
/*
自定义一个求绝对值的函数
*/
int absolute_value(int num1){
if(num1 >= 0){
return num1;
}else{
return -num1;
}
}
//(1)在第2题的基础上,增加一个Point类(点类),包括私有成员横纵坐标x和y(均为int型),以及参数带默认值的构造函数Point(x=0,y=0);
class Point{ //定义一个类名
private: //访问控制符 访问权限 private 修饰的属性,只能在该类中被访问
int x,y;
public: // 声明公共方法
//基本函数
Point();
Point(int x = 0,int y = 0);//参数带默认值的构造函数
Point(Point& p);//拷贝(复制)构造函数
~Point();//析构函数
//(4)增加取横纵坐标值的函数int GetX(); int GetY();
int getX(){return x;}//取横坐标值
int getY(){return y;}//取纵坐标值
};
// 成员方法定义,包括构造方法
Point::Point(){
}
Point::Point(int point_x,int point_y){ // 参数带默认值的构造函数
x = point_x;
y = point_y;
}
// (2)给Point类增加拷贝(复制)构造函数Point(Point& p);
Point::Point(Point& p){
x = p.x; y = p.y;
}
// (3)修改析构函数~Point();不输出任何内容
Point::~Point(){
}
class Ellipse{
private:
// (5)删除Ellipse类原来的四个数据成员,重新修改为 Point a,b;
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();//显示椭圆的外切矩形的顶点坐标
};
// (6)修改Ellipse原来的构造函数Ellipse(int x1,int y1,int x2,int y2);注意使用冒号语法对组合成员进行构造。
Ellipse::Ellipse(int xx1, int yy1, int xx2, int yy2):a(xx1, yy1), b(xx2, yy2){
}
// (7)增加一个Ellipse类的构造函数Ellipse(Point& a,Point& b);
Ellipse::Ellipse(Point &p1, Point &p2):a(p1), b(p2){ //构造函数
}
// (8)修改Ellipse的析构函数,不输出任何内容
Ellipse::~Ellipse(){
}
// 设计1个公有成员方法Area()计算椭圆的面积。
double Ellipse::area(){
return (double)( 3.1415 * absolute_value(b.getX() - a.getX()) * absolute_value(b.getY() - a.getY()) / 4 ); // 椭圆面积公式:s=π*a*b(其中a、b是半长轴) 计算并输出椭圆的面积。(保留2位小数)
}
void Ellipse::show(){ //显示椭圆的外切矩形的顶点坐标
cout << a.getX() << " " << a.getY() << " " << b.getX() << " " << b.getY() << endl;
}
int main(void){ //主函数
int x1, y1, x2, y2;
int x3, y3;
int x4, y4;
cin >> x1 >> y1 >> x2 >> y2;
cin >> x3 >> y3;
cin >> x4 >> y4;
Ellipse e1(x1, y1, x2, y2); // 实例化创建一个 Ellipse 对象
Point p1(x3, y3); // 实例化创建一个 Point 对象
Point p2(x4, y4);
Ellipse e2(p1, p2);
e1.show(); //用Show方法分别输出外切矩形的顶点坐标
e2.show(); // 用Show方法分别输出外切矩形的顶点坐标
cout << fixed << setprecision(2) << e1.area() << endl;
cout << fixed << setprecision(2) << e2.area() << endl;
}
更多推荐



所有评论(0)