6-10 万有引力 - C/C++ 操作符重载

分数 15
作者 海洋饼干叔叔
单位 重庆大学

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。

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

解题代码

long double G = 6.67e-11;
class Particle
{public:long double p_x, p_y, p_z, p_mass, result;Particle(long double x, long double y, long double z, long double mass);long double operator-(const Particle& p2){long double r;//计算两质点间的距离 rr = pow(this->p_x - p2.p_x, 2) + pow(this->p_y - p2.p_y,2) + pow(this->p_z - p2.p_z, 2);this->result = G * this->p_mass * p2.p_mass / r;return this->result;}
};
Particle::Particle(long double x, long double y, long double z, long double mass)
{p_x = x;p_y = y;p_z = z;p_mass = mass;
}

6-10 万有引力 - C/C++ 操作符重载相关推荐

  1. c++语言将任意进制转化10进制,C++ 基础编程之十进制转换为任意进制及操作符重载...

    C++ 基础编程之十进制转换为任意进制及操作符重载 最近学习C++ 的基础知识,完成十进制转换为任意进制及操作符重载,在网上找的不错的资料,这里记录下, 实例代码: #include #include ...

  2. 10. C++操作符重载

    在介绍C++中操作符重载之前,先介绍下C++标准库. 一.C++标准库 1. C++标准库并不是C++语言的一部分:                 2. C++标准库是由C++语言编写而成的类库和函 ...

  3. C++拾趣——有趣的操作符重载

    操作符重载是C++语言中一个非常有用的特性.它可以让我们比较优雅的简化代码,从而更加方便的编写逻辑. 为什么要使用操作符重载 一种常见的用法是重载<<运算符,让标准输出可以输出自定义的类型 ...

  4. C++——构造函数(拷贝构造,拷贝复制),析构函数,操作符重载

    C++--构造函数(拷贝构造,拷贝复制),析构函数,操作符重载 构造函数与析构函数:: 涉及构造函数还可以看这篇文章C++搞懂深拷贝初始化=与赋值=的区别 1.声明和定义构造函数和析构函数 构造函数在 ...

  5. 【Groovy】map 集合 ( map 集合操作符重载 | + 操作符重载 | 代码示例 )

    文章目录 一.map 集合 " + " 操作符重载 二.代码示例 一.map 集合 " + " 操作符重载 对 map 集合使用 " + " ...

  6. C++中逗号操作符重载的分析

    1,关注逗号操作符重载后带来的变化: 2,逗号操作符: 1,逗号操作符(,)可以构成都好表达式:exp1, exp2, exp3, ..., expN 1,逗号表达式用于将多个表达式连接为一个表达式: ...

  7. 泛型与操作符重载杂谈

    泛型基础 1.为什么要用泛型类,我们先来看一段代码: 以交换两个数为例,可能需要定义多个重载方法 public static void swap(ref int x,ref int y) { int ...

  8. Python3 操作符重载方法

    操作符重载方法: 类(class)通过使用特殊名称的方法(len(self))来实现被特殊语法(len())的调用 类(class)通过使用特殊名称的方法(len(self))来实现被特殊语法(len ...

  9. 拷贝构造,操作符重载

     拷贝构造 #include <iostream> #include <string.h> using namespace std; class mystring { pu ...

  10. C++ operator操作符重载(++,--,-,+,())

    C++中++,--操作符重载需要说明是++(--)在操作数前面,还是在操作数后面,区别如下: 代码经过测试无误(起码我这里没问题^_^) Code  1#include <iostream> ...

最新文章

  1. Pytorch的安装教程
  2. 一些关于人工智能的讨论(二)
  3. 基于帝国cms 7.5带支付个人也可以使用的h5微信商城
  4. OpenCV中IplImage和单字节char*的相互转换
  5. 4.状态间的六种转换情况
  6. sublime插件开发教程(附源码)
  7. 网络分流器|运营商光纤延距解决方案
  8. python创建nc文件_如何python写nc文件
  9. SQL 创建数据库、表以及索引
  10. Php超出高度隐藏,html设置div最小高度,超出的自适应
  11. Simulink基于level 2的s-function C语言编写
  12. python并行编程 - 分布式篇
  13. 三分建设,七分运营|用现代化安全运营应对数据安全风险
  14. 第一章图像处理基础概念(人眼和光)
  15. html dashed显示实线怎么改,实现css虚线样式的两种方式:dotted和dashed(实例)
  16. label 中的for属性有什么用
  17. python爬虫下载网站磁力链接
  18. 大话西游2服务器维护公告,大话西游2经典版:2019年05月09日停机维护公告
  19. Android Studio 用USB连接到真机调试方法
  20. 我的第一篇文章,doc命令

热门文章

  1. JavaSE--数组详解
  2. The web application [/zzti] registered the JDBC driver [com.microsoft.sqlserver.jdbc.SQLServerDriver
  3. 【关于 webdriver.Edge 运行报错】
  4. 【debug】mmseg工程训练报错:CUDA kernel errors might be asynchronously reported at some other API call ...
  5. ognl.MethodFailedException: Method login failed for object
  6. 安卓禁止屏幕横向_如何旋转您的PC屏幕(或固定横向屏幕)
  7. 云服务器需要每年出维护费吗,云服务器维护费用
  8. java基于微信小程序的校园失物招领系统 uinapp
  9. 二手手机回收:估价+回收只需3分钟
  10. 复选框作为可挂账否的标识