编译器:C++ (g++)Particle类型用于表示处于三维空间中的质点,其包括如下成员:① 三个浮点数成员x、y和z表示质点在三维空间中的坐标;② 浮点数成员mass表示质点的质量......

编译器:C++ (g++)

Particle类型用于表示处于三维空间中的质点,其包括如下成员:① 三个浮点数成员x、y和z表示质点在三维空间中的坐标;② 浮点数成员mass表示质点的质量;③ 接受空间坐标和质量参数的构造函数;④ 自定义operator-()操作符函数用于计算两个质点间的万有引力,即表达式p1 – p2调用执行p1的operator-()操作符函数,计算质点p1和p2间的万有引力。

万有引用公式F = GMm/r²中,万有引力常数G = 6.67×10-11N·m²/kg²。

请依据上述描述,设计Particle类,使得下述代码能正常执行。

注意:天文数字都很大,建议浮点数全部采用long double类型。

裁判测试程序样例:

#include <iostream>

#include <cmath>

using namespace std;

//在此处定义Particle类及其重载operator+()操作符函数

int main()

{

    long double x, y, z, mass;

    cin >> x >> y >> z >> mass;

    Particle p1(x,y,z,mass);

    cin >> x >> y >> z >> mass;

    const Particle p2(x,y,z,mass);

    long double force = p1 - p2;

    printf("Gravity between two objects = %.1Lf N",force);

    return 0;

}

输入样例:

0 0 0 5.965e15

0 0 38400000 7.342e14

输出样例:

Gravity between two objects = 198101.7 N

说明:输入输出中的所有数据均为标准单位,坐标为米,质量为kg。

请注意:函数题只需要提交相关代码片段,不要提交完整程序。


#include  <iostream>
#include  <cmath>
using  namespace  std;

//在此处定义Particle类及其重载operator+()操作符函数
#define G 6.67e-11
class Particle
{
public:
    Particle(long double a,long double b,long double c,long double m):x(a),y(b),z(c),mass(m){}
    long double x, y, z, mass;
};

long double operator-(Particle &p1,const Particle &p2)
{
    long double r,F;
    r = sqrt(pow(p1.x-p2.x, 2) + pow(p1.y-p2.y, 2) + pow(p1.z-p2.z, 2));
    F = G*p1.mass*p2.mass/(r*r);
    return F;
}

int  main()
{
        long  double  x,  y,  z,  mass;
        cin  >>  x  >>  y  >>  z  >>  mass;
        Particle  p1(x,y,z,mass);
        cin  >>  x  >>  y  >>  z  >>  mass;
        const  Particle  p2(x,y,z,mass);

        long  double  force  =  p1  -  p2;
        printf("Gravity  between  two  objects  =  %.1Lf  N",force);
        return  0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那不勒斯的萤火丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值