第六周实验报告3

实验目的:设计平面坐标点类,计算两点之间的距离、到原点的距离关于坐标轴和原点的对称点等

实验代码:

//设计平面坐标点类,计算两点之间的距离、到原点的距离关于坐标轴和原点的对称点等
#include <iostream>

#include <cmath>

using namespace std;

enum SymmetricStyle{axisx, axisy, point}; //分别表示按x轴,y轴,原点对称

class CPoint
{
private:
    double x; //横坐标
    double y; //纵坐标
public:
    CPoint(double xx = 0, double yy = 0):x(xx), y(yy){};
    double Distance(CPoint p) const; //两点之间的距离(一点是当前点,另一点为参数p)
    double Distance0() const; //到原点的距离
    CPoint SymmetricAxis(SymmetricStyle style) const; //返回对称点
    void input(); //以x, y形式输入坐标点
    void output(); //以(x, y)形式输出坐标点
};

void main()
{
    CPoint p1, p2;
    p1.input();
    p1.output();
    cout << "此点到原点的距离为: " << p1.Distance0() << endl;
    p1.SymmetricAxis(axisx);
    p1.SymmetricAxis(axisy);
    cout << endl;
    p2.input();
    p2.output();
    cout << "此点到原点的距离为: " << p2.Distance0() << endl;
    p2.SymmetricAxis(point);
    cout << endl << "这两点之间的距离为:";
    cout << p1.Distance(p2) << endl;
    system("pause");
}

void CPoint::input()
{
    double x1, y1;
    cin >> x1 >> y1;
    x = x1;
    y = y1;
}

void CPoint::output()
{
    cout << "(" << x << ", " << y << ")" << endl;
}

double CPoint::Distance(CPoint p) const
{
    double s = sqrt((p.x - x) *(p.x - x) + (p.y - y) * (p.y - y));

    return s;
}

double CPoint::Distance0() const
{
    double s1 = sqrt(x * x + y * y);

    return s1;
}

CPoint CPoint::SymmetricAxis(SymmetricStyle style) const
{
    switch(style)
    {
    case axisx: cout << "该点关于X轴的对称点为: " << "(" << x << ", " << -y << ")" << endl; break;
    case axisy: cout << "该点关于Y轴的对称点为: " << "(" << -x << ", " << y << ")" << endl; break;
    case point: cout << "该点关于原点的对称点为: " << "(" << -x << ", " << -y << ")" << endl; break;
    default: break;
    }

    return 0;
}

实验结果截图:

第六周实验报告3_第1张图片

实验心得:

难点其实就在于在类类型中调用枚举类型啦,毕竟枚举类型学过去的时间稍微有些长了,而且在学的时候也没有针对性的练习,所以归根结底在于不能熟练的利用罢了,在写代码的之前,看看课本有关的章节,注意课本例题中给出的代码,回顾回顾,还是可以解决问题的;其次我个人觉得有些难度的还有求p点与已知点之间的距离的函数,因为因为参数是类,所以会在思维上有些困扰,不能像常见的数据类型那样熟练的调用,不过也还好啦,把它当作普通数据类型看待也就会好很多的。

你可能感兴趣的:(System,Class,input,output,distance)