日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第五周项目2-对象作为数据成员

發布時間:2023/12/4 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第五周项目2-对象作为数据成员 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
回想Engineer類的數據成員,有眼鏡、背包等。某Engineer的眼鏡、背包,是Glass、Bag類的對象。類中的數據成員,其類型可以是簡單類型,也可以是類。通過這種方式,將某些類組合到另外的類中,當作其中的一個“部件”使用。
本項目設計一個三角形類,其數據成員不再是三角形三條邊的邊長,而是三角形的三個頂點。利用設計的三角形類,輸入三角形的三個頂點,求出其面積、周長,并判斷其是否為直角三角形和等腰三角形。

提示:(1)這個問題需要用到兩個類,頂點類參照項目1中的CPoint類;(2)三角形類參考下面CTriangle類的聲明;(3)充分利用CPoint類中已有的代碼實現;(4)關于三條邊長的處理,可以增加三個私有屬性,在初始化時求出來備用。當然,也可以在需要用到時再計算。

/* * Copyright (c) 2015,煙臺大學計算機學院 * All right reserved. * 作者:邵帥 * 文件:Demo.cpp * 完成時間:2015年04月08日 * 版本號:v1.0 */ #include <iostream> #include <cmath> using namespace std; class CPoint { private:double x; // 橫坐標double y; // 縱坐標 public:CPoint(double xx=0,double yy=0);double distance1(CPoint p) const; // 兩點之間的距離void input(); //以x,y 形式輸入坐標點void output(); //以(x,y) 形式輸出坐標點 }; class CTriangle { public:CTriangle(CPoint &X,CPoint &Y,CPoint &Z):A(X),B(Y),C(Z) {}; //給出三點的構造函數void setTriangle(CPoint &X,CPoint &Y,CPoint &Z);//float perimeter(void);//計算三角形的周長float area(void);//計算并返回三角形的面積bool isRightTriangle(); //是否為直角三角形bool isIsoscelesTriangle(); //是否為等腰三角形 private:CPoint A,B,C; //三頂點 }; CPoint::CPoint(double xx,double yy):x(xx),y(yy) {}; double CPoint::distance1(CPoint p) const {double s;s=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));return s; } void CPoint::input() {char ch;cout<<"Please input the point(x,y):";while(1){cin>>x>>ch>>y;if (ch==',')break;cout<<"Wrong style,please input agein."<<endl;} } void CPoint::output() {cout<<"("<<x<<", "<<y<<")"<<endl; } void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z) {A=X;B=Y;C=Z; } float CTriangle::perimeter(void)//計算三角形的周長 {double s1,s2,s3;s1=A.distance1(B);s2=B.distance1(C);s3=C.distance1(A);return (s1+s2+s3); } float CTriangle::area(void)//計算并返回三角形的面積 {double p,s;double s1,s2,s3;s1=A.distance1(B);s2=B.distance1(C);s3=C.distance1(A);p=(s1+s2+s3)/2;s=sqrt(p*(p-s1)*(p-s2)*(p-s3));return s; } //以下來自賀老 bool CTriangle::isRightTriangle()//是否為直角三角形 {double a=B.distance1(C),b=C.distance1(A),c=A.distance1(B);double max=a;if(b>max) max=b;if(c>max) max=c;if(((max==a)&&(abs(a*a-b*b-c*c)<1e-7))||((max==b)&&(abs(b*b-a*a-c*c)<1e-7))||((max==c)&&(abs(c*c-b*b-a*a)<1e-7)))return true;elsereturn false; } bool CTriangle::isIsoscelesTriangle()//是否為等腰三角形 {double a=B.distance1(C),b=C.distance1(A),c=A.distance1(B);if((abs(a-b)<1e-7)||(abs(b-c)<1e-7)||(abs(c-a)<1e-7))return true;elsereturn false; } int main() //測試數據,來自賀老 {CPoint X(2,5),Y(5,2),Z(7,8);CTriangle Tri1(X,Y,Z); //定義三角形類的一個實例(對象)cout<<"該三角形的周長為:"<<Tri1.perimeter()<<",面積為:"<<Tri1.area()<<endl<<endl;cout<<"該三角形"<<(Tri1.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl;cout<<"該三角形"<<(Tri1.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl;return 0; }運行結果:


!判斷是否構成直角三角形!

bool CTriangle::isRightTriangle()//是否為直角三角形 {double a=B.distance1(C),b=C.distance1(A),c=A.distance1(B);double max=a;if(b>max) max=b;if(c>max) max=c;if(((max==a)&&(abs(a*a-b*b-c*c)<1e-7))||((max==b)&&(abs(b*b-a*a-c*c)<1e-7))||((max==c)&&(abs(c*c-b*b-a*a)<1e-7)))return true;elsereturn false; }
!判斷是否構成等腰三角形!
bool CTriangle::isIsoscelesTriangle()//是否為等腰三角形 {double a=B.distance1(C),b=C.distance1(A),c=A.distance1(B);if((abs(a-b)<1e-7)||(abs(b-c)<1e-7)||(abs(c-a)<1e-7))return true;elsereturn false; }


@ Mayuko

轉載于:https://www.cnblogs.com/mayuko/p/4567521.html

總結

以上是生活随笔為你收集整理的第五周项目2-对象作为数据成员的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。