C++ 椭圆类
橢圓類——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;}總結
- 上一篇: STC89C52单片机 点亮两个数码管,
- 下一篇: C++ 判断两个立方体是否相等