用c++定义两个坐标点,计算两点间距离;进而计算线段的面积


//本程序有三个层次

//第一层(define_class.h):构造坐标点类,颜色和宽度的结构体,线段类

//第二层(function.h):对上一层声明的函数进行定义

//第三层(distance.cpp):用类定义对象并初始化对象,对结果进行测试

define_class.h

#if!defined(define_class_H)
#define define_class_h
#include <iostream>
#include <cmath>
using namespace std;
//定义坐标点类
class Point
{
private:
  double X,Y; //横坐标、纵坐标作为私有变量
public:
  Point(double=0,double=0); //构造函数

  Point(Point &); //复制的构造函数

  void Display() //显示坐标点
  {
    cout<<X<<","<<Y<<endl;
  }

  double Distance(Point &); //两点间距离的函数,参数是点类的引用,也可以用友元函数

  int getX()
  {
    return X; //得到横坐标的值
  }

  int getY()
  {
    return Y; //得到纵坐标的值
  }
};

struct Cow //color和width,结构体,结构体内的变量是public的
{
  int Color;
  int Width;
};

class Line //定义线段类
{
  private:
  Point a,b; //线段类的私有数据成员是点类的对象
  Cow cw; //线段有颜色和宽度
  public:
  Line(Point &,Point &,Cow &); //线段的构造函数,由两个点、颜色和宽度构成
  void Display();
  Line(Line &); //复制的构造函数
  double Distance(); //两点间的距离
  double Area(); //线段的面积
};

#endif

function.h

#if!defined(function_H)
#define function_H
#include "define_class.h" //包含头函数
Point::Point(double a,double b) //定义构造函数,前面的头函数中仅仅声明了函数
{
  X=a;
  Y=b;
}
Point::Point(Point &a) //定义复制的构造函数
{
  X=a.X;
  Y=a.Y;
}
double Point::Distance(Point &a) //求两点间的距离
{
  double dis;
  dis=sqrt((X-a.X)*(X-a.X)+(Y-a.Y)*(Y-a.Y));
  return dis;
}
Line::Line(Point &a1,Point &a2,Cow &a3):a(a1),b(a2),cw(a3) //给Line的私有变量初始化
{ //对象间的初始化,因此需要复制的构造函数
}
Line::Line(Line &s) //定义复制的构造函数
{
  a=s.a;
  b=s.b;
  cw=s.cw;
}
void Line::Display() //显示线段
{
  a.Display();
  b.Display();
  cout<<"Color="<<cw.Color<<","<<"width="<<cw.Width<<endl;
}
double Line::Distance()
{
  double x,y;
  x=a.getX()-b.getX();
  y=a.getY()-b.getY();
  return sqrt(x*x+y*y);
}
double Line::Area()
{
  return cw.Width * Distance();
}
#endif

distance.cpp

#include <iostream>
#include <cmath>
#include "function.h"
using namespace std;

void main()
{
  Point a;
  Point b(8.9,9.8),c(34.5,67.8);
  a=c;
  a.Display();
  b.Display();

  cout<<"两点之间的距离:"<<a.Distance(b)<<endl;

  Cow cw={3,5};

  Line s(a,b,cw);

  Line s1(s);

  s1.Display();

  cout<<"线段的长度:"<<s1.Distance()<<endl;
  cout<<"线段的面积:"<<s1.Area()<<endl;
}

猜你喜欢

转载自www.cnblogs.com/duanqibo/p/11096455.html