21xrx.com
2024-11-08 22:19:10 Friday
登录
文章检索 我的文章 写文章
使用C++编写程序,读入Point2D类,并计算出p1、p2、p3之间的距离。
2023-06-28 17:11:28 深夜i     --     --
C++ 程序 Point2D类 距离 p1 p2 p3

在计算机编程领域里,C++语言被广泛应用,因为它可以高效地实现计算机操作。而在C++语言中,我们可以定义并使用自己的类,以适应不同的编程需求。在这篇文章中,我们将介绍如何使用C++编写一个读入Point2D类并计算出其中三个点之间距离的程序。

首先,让我们来定义Point2D类。一个点需要有x、y两个属性,因此我们可以定义一个包含两个私有变量的类,如下所示:


class Point2D{

private:

  double x, y; // x和y坐标值

public:

  Point2D(double x, double y)

    this->x = x;

    this->y = y;

  

  double getX()

    return x;

  

  double getY()

    return y;

  

};

上述代码中,我们定义了一个名为Point2D的类,并在其内部定义了x和y两个私有成员变量,分别表示点的横纵坐标值。在构造函数中,我们初始化了这两个私有变量。接下来,我们又定义了两个公共方法getX和getY,用于获取点的x、y坐标值。

现在,我们已经定义好了Point2D类,接下来可以开始编写主程序。我们将从标准输入中读入三个Point2D点,计算它们之间的距离,并输出结果。具体代码如下:


#include <iostream>

#include <cmath> // 数学函数库

using namespace std;

class Point2D{

private:

  double x, y; // x和y坐标值

public:

  Point2D(double x, double y)

    this->x = x;

    this->y = y;

  

  double getX()

    return x;

  

  double getY()

    return y;

  

};

int main(){

  // 从标准输入中读入三个点的x、y坐标

  double x1, y1, x2, y2, x3, y3;

  cout << "请输入三个点的x、y坐标值:" << endl;

  cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;

  // 创建三个Point2D对象

  Point2D p1(x1, y1);

  Point2D p2(x2, y2);

  Point2D p3(x3, y3);

  // 计算p1、p2、p3之间的距离

  double distance1 = sqrt(pow(p2.getX()-p1.getX(), 2) + pow(p2.getY()-p1.getY(), 2));

  double distance2 = sqrt(pow(p3.getX()-p2.getX(), 2) + pow(p3.getY()-p2.getY(), 2));

  double distance3 = sqrt(pow(p1.getX()-p3.getX(), 2) + pow(p1.getY()-p3.getY(), 2));

  // 输出结果

  cout << "p1和p2之间的距离为:" << distance1 << endl;

  cout << "p2和p3之间的距离为:" << distance2 << endl;

  cout << "p1和p3之间的距离为:" << distance3 << endl;

}

在上述程序中,我们首先定义了Point2D类,并在主程序中从标准输入中读入三个点的x、y坐标值,并通过构造函数创建了三个Point2D对象。接着,我们使用数学函数库中的sqrt和pow函数计算出p1、p2、p3之间的距离,并将结果输出到标准输出流中。

在完成程序的编写后,我们可以编译并运行该程序,得到如下结果:


请输入三个点的x、y坐标值:

0 0 3 4 6 0

p1和p2之间的距离为:5

p2和p3之间的距离为:5

p1和p3之间的距离为:6

可以看到,程序成功地读入了三个点的坐标值,并计算出了它们之间的距离。这个程序也让我们更好地理解了C++语言的类的定义和使用,以及如何使用数学函数库进行计算。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复