Journal Third

Journal Third

两球问题

先放一下题目:
在这里插入图片描述

这种比较长的题看一遍我貌似都没法懂他是想干什么,就相当于看了一下故事hhh。

其实也就是一个数学问题啦,数学模型就是两个球体相交的情况下,求体积与表面积之和,可以说没有太大难度吧,关键就是找数学公式。然后知道了球冠与球缺的概念。以及球缺的表面积与体积的公式。

球冠:
在这里插入图片描述

先上一下公式:
球缺表面积:在这里插入图片描述
球缺体积:在这里插入图片描述
两球相交时球缺的高度:R为当前球半径,d为两球心之间距离

然后是代码:

// 球体问题.cpp : 计算两球相交后的总体积与表面积
//Ste-Made

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<math.h>
#define Pi 2*acos(0)

int pairs;
double r1, r2;//两球半径
double d;//球心距离
double dest;//密度
double mass;
double to_vo;
double to_su;
double h1, h2;

void Input(void);
void Judge(double v);//判断上浮或下沉
void Output(double v, double s);
double scap_volume(double R,double H);//计算体积
double scap_surface(double R,double H);//计算表面积



int main()
{
    scanf("%d", &pairs);
    while (pairs)
    {
        Input();
        h1 = r1 + (pow(r1, 2) - pow(r2, 2) + pow(d, 2)) / (2.0 * d);
        h2 = r2 + (pow(r2, 2) - pow(r1, 2) + pow(d, 2)) / (2.0 * d);
        to_vo = scap_volume(r1,h1) + scap_volume(r2,h2);
        to_su = scap_surface(r1,h1) + scap_surface(r2,h2);
        Output(to_vo, to_su);
        Judge(to_vo);
        pairs--;
    }

    return 0;
}

void Input(void)
{
    scanf("%lf%lf%lf%lf%lf", &r1, &r2, &d, &mass, &dest);

}

void Output(double v, double s)
{
    printf("%.4f %.4f\n", v, s);
}

void Judge(double v)
{
    double dest_scap = mass / v;
    if (dest > dest_scap)
    {
        printf("The Paired-Sphere Floats.\n");
    }
    else
        printf("The Paired-Sphere Sinks.\n");
}

double scap_volume(double R, double H)
{
    return Pi * pow(H, 2) * (R - H / 3);
}
double scap_surface(double R, double H)
{
   
    return 2 * Pi * R * H ;
}

哦对了,然后发现用float类型和double类型最后所得的结果是不一样的。以后有时间会写一篇专门学习一下两者的区别的嘻嘻

然后是第一次用2*acos(0)函数来表示Pi的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值