椭圆类——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;

}
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐