用C++完成 根據三點座標求三角形面積 功能
阿新 • • 發佈:2019-01-27
一、要求:
已知平面直角座標系中兩點(x1,y1)和(x2,y2)之間的距離公式為
,三角形面積的計算公式為。其中,a,b,c為三角形的三邊長,s=(1/2)(a+b+c).是定義一個描述平面直角座標系上點的類Point,利用友元函式求座標系中由三個點構成的三角形面積。具體要求如下:
(1)私有資料成員
float x,y;座標系中的一個點座標。
(2)公有資料成員
Point(double ,double);建構函式,初始化成員,引數的預設值為0。
void print();輸出點的座標,格式為(x,y)。
友元函式
double distance(Point,Point);計算兩點之間的距離。
double area(Point,Point,Point);計算由引數構成的三角形的面積,假設給定的三個點能夠構成三角形。
(3)在主函式中完成對該類的測試。定義三個類的物件p1,p2,p3,這三個點的座標分別為(5,10),(1,67),(50,-25)。輸入這三點座標,計算並輸出由這三個點構成的三角形的面積。程式正確的輸出結果為:
三角形的頂點座標為:(5,10)(1,67)(50,-25)三角形的面積為:1212.5
二、程式碼:
// Point.h #ifndef _POINT_H #define _POINT_H #include <math.h> class Point { private: float x,y; public: Point(double a, double b){x = a; y = b;} void print(); friend double pointDistance(Point p1, Point p2); friend double area(Point p1, Point p2, Point p3); }; #endif
// Point.cpp #include <iostream> using namespace std; #include "Point.h" void Point:: print() { cout<<"("<<x<<","<<y<<")"<<" "; } double pointDistance(Point p1, Point p2) { double distance = 0; distance = sqrt((p1.y-p2.y)*(p1.y-p2.y)+(p1.x-p2.x)*(p1.x-p2.x)); return distance; } double area(Point p1, Point p2, Point p3) { double area = 0; double a = 0, b = 0, c = 0, s = 0; a = pointDistance(p1, p2); b = pointDistance(p2, p3); c = pointDistance(p1, p3); s = 0.5*(a+b+c); area = sqrt(s*(s-a)*(s-b)*(s-c)); return area; }
// PointMain.cpp
#include <iostream>
using namespace std;
#include "Point.h"
int main()
{
Point p1(5, 10);
Point p2(1, 67);
Point p3(50, -25);
cout<<"三角形頂點座標為:";
p1.print();
p2.print();
p3.print();
cout<<endl;
cout<<"三角形面積為:";
cout<<area(p1, p2, p3)<<endl;
return 0;
}
三、執行結果: