.万有引力

编译器: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类型。

裁判测试程序样例:

输入样例:

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+()操作符函数
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;
}

Ans:

#define G 6.67e-11

class Particle {
private:
    long double x;
    long double y;
    long double z;
    long double mass;

public:
    Particle(long double x, long double y, long double z, long double m);

    friend long double operator-(const Particle& a, const Particle& b);


};

Particle::Particle(long double x, long double y, long double z, long double m) {
    this->x = x;
    this->y = y;
    this->z = z;
    this->mass = m;
}
long double operator-(const Particle& a, const Particle& b) {
    long double r = sqrt(pow(a.x - b.x, 2) + pow(a.y - b.y, 2) + pow(a.z - b.z, 2));
    return (G * a.mass * b.mass) / (r * r);

}

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值