当前位置: 首页>C++>正文

組合體的組合類型有哪兩類,C++實驗03(03)組合類:Triangle類與Point類

組合體的組合類型有哪兩類,C++實驗03(03)組合類:Triangle類與Point類

題目描述
定義一個平面坐標系下的點類Point,有整型數據成員x,y坐標值。成員函數包括:(1)帶默認值的構造函數,默認值均為0;(2)拷貝構造函數;(3)置x,y坐標值;(4)取x,y的坐標值,參數為兩個整型量的引用,分別用于獲取x,y坐標值。(5)輸出函數,用于輸出x,y坐標值。(6)求兩個點之間距離的函數,參數是Point類的對象引用。
定義一個平面坐標系下的三角形類Triangle,數據成員為三個Point類的對象p1、p2、p3。成員函數包括:(1)帶參數的構造函數,參數為整型量x1,y1,x2,y2,x3,y3,分別是三角形三個頂點的坐標。(2)帶參數的構造函數,參數是三個Point類對象的引用。(3)求三角形周長。(4)求三角形面積。(5)輸出三角形的三個頂點坐標、周長和面積。
定義一個普通函數:判斷三個頂點坐標能否構成三角形。
main()中,從鍵盤輸入三個點坐標,判斷這三個點能否構成三角形,不能,則提示重新輸入,并重新輸入點坐標;能,則輸出三個頂點坐標、周長和面積。
輸入描述
三個點的坐標,如果不能構成三角形,再重新輸入三個點的坐標
輸出描述
三個頂點坐標
三角形周長、三角形面積
輸入樣例
0 0
1 1
2 2

組合體的組合類型有哪兩類,0 0
5 6
3 0
輸出樣例
頂點坐標不正確,不能構成三角形!請重新輸入坐標!
三角形三個頂點坐標為:
(0,0) (5,6) (3,0)
三角形周長為:17.1348,面積為:9

#include<iostream>
#include<cmath>
using namespace std;
class Point
{
public:Point(int a=0,int b=0){x=a;y=b;}Point(const Point &a)//拷貝構造函數{x=a.x;y=a.y;}void input(){cin>>x>>y;}int getx(int &x){return x;}int gety(int &y){return y;}void output(){cout<<"("<<x<<","<<y<<")";}double distance(Point &a){double dx=x-a.x,dy=y-a.y;return sqrt(dx*dx+dy*dy);}
private:int x,y;
};
class Triangle
{
public:Triangle(int x1,int y1,int x2,int y2,int x3,int y3){A=(x1,y1);B=(x2,y2);C=(x3,y3);}Triangle(Point &a,Point &b,Point &c){A=a;B=b;C=c;}double Len(){return A.distance(B)+B.distance(C)+C.distance(A);}double Area(){double s=Len()/2.0;return sqrt(s*(s-A.distance(B))*(s-B.distance(C))*(s-C.distance(A)));}void output(){	cout<<endl<<"三角形周長為:"<<Len()<<",面積為:"<<Area();}
private:Point A,B,C;
};
bool ifTriangle(Point &p1,Point &p2,Point &p3)
{	here:if((p1.distance(p2)+p2.distance(p3)>p3.distance(p1))&& (p1.distance(p2) + p3.distance(p1) > p2.distance(p3)) && (p2.distance(p3) + p3.distance(p1) > p1.distance(p2))){	cout << "三角形三個頂點坐標為:" << endl;p1.output();p2.output();p3.output();Triangle T(p1,p2,p3);T.output();}else{cout << "頂點坐標不正確,不能構成三角形!請重新輸入坐標!" << endl;return false;}}
int main()
{Point A,B,C;here:A.input();B.input();C.input();if (ifTriangle(A, B, C) == false){goto here;}return 0;
}

判斷是否是三角形

兩邊之和大于第三邊
或者(兩邊之差小于第三邊)
但是要列出3個
比如
a+b>c&&a+c>b&&b+c>a

if((p1.distance(p2)+p2.distance(p3)>p3.distance(p1))&& (p1.distance(p2) + p3.distance(p1) > p2.distance(p3)) && (p2.distance(p3) + p3.distance(p1) > p1.distance(p2)))```

https://www.nshth.com/cplus/326392.html
>

相关文章:

  • 組合體的組合類型有哪兩類
  • 基本組合邏輯實驗
  • 組合類析構
  • java point類
  • 實驗組合
  • 組合數公式
  • 類組合
  • 對比實驗
  • 樹莓派的控制方法,第二篇 樹莓派基本外設基礎篇
  • 手機如何連接外設,iOS連接外設的幾種方式
  • switch可以外接鍵鼠嗎,別再給手機外接OTG鍵鼠玩刺激戰場了:其實還能這樣操作
  • [阿發你好]C/C++學習指南
  • 輸入法哪個最好用,wsl2中安裝中文輸入法
  • 字符串中引入變量方法,字符串處理、變量初始值處理、擴展的腳本技巧、正則表達式
  • 某計算機內存容量是512kb,某計算機主存容量為512kb,Cache容量為16kb,每塊有16個字,每字32位。 (1...
  • 中國工商網商標查詢,工商局爬蟲 商標網爬蟲
  • iOS真機調試TestFlight安裝及提交App Store審核教程
  • 蘋果app上架流程,小白如何在ios中安裝ios上架
  • 蘋果彈出提交表格是什么,蘋果TestFlight測試操作圖文教程(測試后提交App Store審核)
  • 四門外語傍身:外語,讓我的大學如此完美
  • D3D Surface/Texture SDL DDraw渲染視頻的區別和疑問
  • 手機VR播放器,Android VR Player(全景視頻播放器) [10]: VR全景視頻渲染播放的實現(exoplayer,glsurfaceview,o
  • Qt渲染視頻常見問題(視頻渲染窗口上子窗口設置透明出現陰影問題、主窗口縮放導致視頻渲染窗口部分出現視頻閃爍問題)
  • 視頻解析網站源碼,ijkplayer源碼分析 視頻渲染流程
  • 一分鐘的視頻渲染要多久,基礎教程|如何在數分鐘時間內渲染超清精美視頻?
  • Metal(六) 案例之視頻文件的渲染
  • flutter開發小程序,最強整理!寫給程序員的Flutter詳細教程,大廠直通車!
  • c++黑客編程揭秘與防范,C/C++截獲騰訊QQ網絡聊天系統內容和登錄密碼,教你做一個黑客!
  • 支付行業具體做什么,做支付需要了解哪些行業知識
  • 5大底層邏輯,淺談HyperLogLog底層算法邏輯
  • c++實現復數的加減乘除,【C++】輔助C++計算復數(代碼解釋的很清楚)
  • nlogn的算法有哪些,算法運行時間1、logN、N、NlogN 、N^2、N^3、2^n之間的比較
  • 開源圖片庫,幾種常用圖像處理開源庫簡介及使用總結
  • 圖像處理和計算機視覺,《圖像處理與計算機視覺算法及應用》讀后感
  • gps定位,側邊欄固定定位到版心兩側
  • css版心怎么設置,[css]版心和布局流程
  • 瀏覽器多個窗口怎么設置在一個頁面,網頁多種版心適應多屏幕技巧
  • 前端學習之版心和布局流程