程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 第6周-項目4-三角形類

第6周-項目4-三角形類

編輯:C++入門知識

[cpp]
*      
* 程序的版權和版本聲明部分      
* Copyright (c)2013, 煙台大學計算機學院學生      
* All rightsreserved.      
* 文件名稱: object.cpp      
.* 作者:楊紹寧     
* 完成日期: 2013年  4  月 10 日      
* 版本號: v1.0      
* 輸入描述:無      
* 問題描述:設計三角形類和點類。      
* 程序輸出:輸出周長,面積,判斷是否是直角三角形,等腰三角形。      
*/             
#include <iostream>  
#include<Cmath>  
using namespace std; 
class CPoint 
{private: 
  double x;  // 橫坐標  
  double y;  // 縱坐標  
public: 
  CPoint(double xx=0,double yy=0); 
  void input(); 
  double Distance(CPoint p) const;   // 兩點之間的距離(一點是當前點,另一點為參數p)  
  void output(); //以(x,y) 形式輸出坐標點  
}; 
CPoint::CPoint(double xx,double yy) 

    x=xx; 
    y=yy; 

void CPoint::input() 

    char c; 
    cin>>x>>c>>y; 
    if(c!=',') 
    { 
        cout<<"輸入錯誤,請重新輸入"; 
        exit(0); 
    } 
     

double CPoint::Distance(CPoint p) const         // 兩點之間的距離(一點是當前點,另一點為參數p)  

    double s; 
    s=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y)); 
    return s; 

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; //三頂點  
}; 
void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z)//  

    A=X; 
    B=Y; 
    C=Z; 

float CTriangle::perimeter(void)//計算三角形的周長  

    float a,b,c,l; 
    a=A.Distance(B); 
    b=B.Distance(C); 
    c=C.Distance(A); 
    l=a+b+c; 
    return l; 

float CTriangle::area(void)//計算並返回三角形的面積  

    float a,b,c,p,s; 
    a=A.Distance(B); 
    b=B.Distance(C); 
    c=C.Distance(A); 
    p=(a+b+c)/2; 
    s=sqrt(p*(p-a)*(p-b)*(p-c));   
    return s;   
     

bool CTriangle::isRightTriangle()//是否為直角三角形  

    double a,b,c; 
    a=A.Distance(B); 
    b=B.Distance(C); 
    c=C.Distance(A); 
    bool prime=false; 
    if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a)) 
    { 
        prime=true; 
    } 
    return prime; 
 

bool  CTriangle::isIsoscelesTriangle() //是否為等腰三角形  

    double a,b,c; 
    a=A.Distance(B); 
    b=B.Distance(C); 
    c=C.Distance(A); 
    bool prime=false; 
    if(a==b||a==c||b==c) 
    { 
        prime=true; 
    } 
    return prime; 

int main() 

    CPoint x,y,z; 
    x.input(); 
    y.input(); 
    z.input(); 
    CTriangle tri(x,y,z);  //復制構造函數  
    cout<<"這個三角形的周長為:"<<tri.perimeter()<<",面積為:"<<tri.area()<<endl;   
    cout<<"這個三角形"<<(tri.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl;   
    cout<<"這個三角形"<<(tri.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl;   
    return 0;   
 

/*     
* 程序的版權和版本聲明部分     
* Copyright (c)2013, 煙台大學計算機學院學生     
* All rightsreserved.     
* 文件名稱: object.cpp     
.* 作者:楊紹寧    
* 完成日期: 2013年  4  月 10 日     
* 版本號: v1.0     
* 輸入描述:無     
* 問題描述:設計三角形類和點類。     
* 程序輸出:輸出周長,面積,判斷是否是直角三角形,等腰三角形。     
*/           
#include <iostream>
#include<Cmath>
using namespace std;
class CPoint
{private:
  double x;  // 橫坐標
  double y;  // 縱坐標
public:
  CPoint(double xx=0,double yy=0);
  void input();
  double Distance(CPoint p) const;   // 兩點之間的距離(一點是當前點,另一點為參數p)
  void output(); //以(x,y) 形式輸出坐標點
};
CPoint::CPoint(double xx,double yy)
{
 x=xx;
 y=yy;
}
void CPoint::input()
{
 char c;
 cin>>x>>c>>y;
 if(c!=',')
 {
  cout<<"輸入錯誤,請重新輸入";
  exit(0);
 }
 
}
double CPoint::Distance(CPoint p) const         // 兩點之間的距離(一點是當前點,另一點為參數p)
{
 double s;
 s=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));
 return s;
}
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; //三頂點
};
void CTriangle::setTriangle(CPoint &X,CPoint &Y,CPoint &Z)//
{
 A=X;
 B=Y;
 C=Z;
}
float CTriangle::perimeter(void)//計算三角形的周長
{
 float a,b,c,l;
 a=A.Distance(B);
 b=B.Distance(C);
 c=C.Distance(A);
 l=a+b+c;
 return l;
}
float CTriangle::area(void)//計算並返回三角形的面積
{
 float a,b,c,p,s;
 a=A.Distance(B);
 b=B.Distance(C);
 c=C.Distance(A);
 p=(a+b+c)/2;
 s=sqrt(p*(p-a)*(p-b)*(p-c)); 
    return s; 
 
}
bool CTriangle::isRightTriangle()//是否為直角三角形
{
 double a,b,c;
 a=A.Distance(B);
 b=B.Distance(C);
 c=C.Distance(A);
 bool prime=false;
 if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))
 {
  prime=true;
 }
 return prime;

}
bool  CTriangle::isIsoscelesTriangle() //是否為等腰三角形
{
 double a,b,c;
 a=A.Distance(B);
 b=B.Distance(C);
 c=C.Distance(A);
 bool prime=false;
 if(a==b||a==c||b==c)
 {
  prime=true;
 }
 return prime;
}
int main()
{
 CPoint x,y,z;
 x.input();
 y.input();
 z.input();
 CTriangle tri(x,y,z);  //復制構造函數
 cout<<"這個三角形的周長為:"<<tri.perimeter()<<",面積為:"<<tri.area()<<endl; 
    cout<<"這個三角形"<<(tri.isRightTriangle()?"是":"不是")<<"直角三角形"<<endl; 
    cout<<"這個三角形"<<(tri.isIsoscelesTriangle()?"是":"不是")<<"等腰三角形"<<endl; 
 return 0; 

}
結果:\

感受:定義了兩個類,復制構造函數!!!

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved