C++ 三角形面積計算
作業要求
8[D&SJX_B] 設計、編寫和除錯面向物件C++程式,支援和實現基於三個平面坐標點的三角形面積計算功能。基本要求同作業題[D&SJX_A],但要求三角形類作為點類的友元類,故需改寫三角形面積計算成員函式使其可直接訪問其三個頂點的橫縱座標值程式設計說明
點類設計
類名
point
備註
成員函式
point (int zx=0,int zy=0);//建構函式
建構函式
point (point &p);//拷貝建構函式
拷貝建構函式
~point();
解構函式
void psetvalue (int zx,int zy);//設定函式
設定橫縱座標函式
int getx();//橫座標提取函式
橫座標提取函式
int gety();//縱座標提取函式
縱座標提取函式
friendclasstri;
友元類
成員變數
int mx,my;
橫縱座標
類名
tri
備註
成員函式
tri( point &zp1, point &zp2, point &zp3);//
建構函式
tri(int x1=0,int y1=0,int x2=0,int y2=0,int x3=0,int y3=0) {}
建構函式
tri(tri &p);//拷貝建構函式
拷貝建構函式
~tri ();//解構函式
解構函式
void tsetvalue ( point &zp1, point &zp2, point &zp3);//設定函式
賦值函式
double area ();//面積計算函式
面積計算函式
成員變數
point marray[3];
點類的物件陣列
關鍵函式設計說明
point (int zx=0,int zy=0);//建構函式建構函式,支援預設賦值
point (point &p);//拷貝建構函式用於拷貝建構函式
~point();//解構函式輸出賦值的結構,便於觀察呼叫順序
void psetvalue (int zx,int zy);//設定函式設定函式中的橫縱座標
int getx();//橫座標提取函式將函式的橫座標返回
int gety();//縱座標提取函式將函式的縱座標返回
tri(point&zp1,point&zp2,point&zp3);//建構函式
tri(intx1=0,inty1=0,intx2=0,inty2=0,intx3=0,inty3=0)
{}
tri(tri&p);//拷貝建構函式
~tri();//解構函式解構函式,顯示呼叫順序
voidtsetvalue(point&zp1,point&zp2,point&zp3);//設定函式設定函式,將三個點類輸入
doublearea();//面積計算函式利用tarea=0.5*(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2);公式將三角形的面積計算出來
源程式
由宣告標頭檔案point.h和tri.h、實現源程式檔案point.cpp、tri.cpp和運算例程main.cpp組成。
宣告標頭檔案point.h程式碼清單
#ifndef POINT
#definePOINT
classtri;
class
point
{
int mx,my;
public:
point (int zx=0,int zy=0);//建構函式
point (point &p);//拷貝建構函式
~point();//解構函式
void psetvalue (int zx,int zy);//設定函式
int getx();//橫座標提取函式
int gety();//縱座標提取函式
friendclasstri;
};
#endif// !POINT
宣告標頭檔案tri.h程式碼清單
#ifndefTRI
#defineTRI
#include"point.h"
classtri
{
point marray[3];
public:
tri( constpoint &zp1, constpoint &zp2,constpoint &zp3);//建構函式
tri(intx1=0,inty1=0,intx2=0,inty2=0,intx3=0,inty3=0)
{}
tri(tri &p);//拷貝建構函式
~tri ();//解構函式
void tsetvalue (constpoint &zp1,constpoint &zp2,constpoint &zp3);//設定函式
double area ();//面積計算函式
};
#endif
實現源程式檔案point.cpp程式碼清單
#include<iostream>
#include<cmath>
#include"point.h"
#include"tri.h"
usingnamespace std;
point::point(intzx,intzy)//建構函式
{
mx=zx;
my=zy;
}
point::point(point &p)//拷貝建構函式
{
mx=p.mx;
my=p.my;
}
point::~point()//解構函式
{
cout<<mx<<","<<my<<endl;
}
voidpoint::psetvalue(intzx,intzy)//point賦值函式
{
mx=zx;
my=zy;
}
int