c++割圆法求圆周率

前言

上期的Python(加了turtle 所以带图片)割圆法点赞数量感人

但洛谷那期已经让我飞了 于是我准备掉点头发

以五升六之躯硬刚初三

这期请教了大量的高年级同学

把这个要用到九年级知识点的割圆法搞出来了

不要怕难 像我这样的xxs也能看懂

先声明 割圆法不一定要用循环 其实一次循环就可以得出结论了

先放代码(这边用圆周率是为了获得角度的弧度值):

#include<bits/stdc++.h>
using namespace std;
int main(){
	long long a;
	cout<<"请输入分割次数";
	cin>>a;
	double b=sin(360.0/a*(3.141592653589/180));
	printf("π的近似值:%.12lf",a*b/2);
	return 0;
}

_____________________________________________________________________________

框架

写框架:

#include<bits/stdc++.h>//万能头
/*
这个万能头约等于以下几行代码:
#include<iostream>
#include<cstdio>
#incldue<cmath>
*/
using namespace std;//使用头文件

	return 0;//防止无输出的时候报错
}

_____________________________________________________________________________

输入

接下来输入分割次数:

#include<bits/stdc++.h>
using namespace std;
int main(){
	long long a;//声明变量a的类型为long long(int也行 随你便 这里改为int以后 后面也不用改了)
	cout<<"请输入分割次数";//不换行的输出
	cin>>a;//由于上个输出不换行 所以在输出结尾输入
}

_____________________________________________________________________________

处理数据

开始处理数据了

这里 理科文凭高达xxs的可能看不懂 我将逐帧解析

看不懂的人 可能就是理科担忧的那群人

double b=sin(360.0/a*(3.141592653589/180));
类型使用

用double是为了可以把数据精确到小数点后12位

角度值与弧度值

这边用圆周率是为了把角度值转换为弧度值

角度值换弧度值:角度值*(π/180)

弧度值换角度值:弧度值/(π/180)

整形与浮点型的除法

用360.0不用360是因为c++里有个概念:

整形/整形=整形(整形就是int和long long)

实例:9/2=4

浮点型/整形=浮点型(浮点型就是float和double)

实例:9.0/2=4.5

整形/浮点型=浮点型

实例:9/4.5=2.0

分成三角形靠近中心点的锐角的角度计算

360/a就是计算中心点的角有多少度

这张图把圆的四分之一分成了4份

先把这个圆的四分之一看成一个角

那么360.0/a则等于90°

三角函数

这里的sin函数来自cmath工具箱 求的是括号里角度的对边/邻边的值

除了sin 还有两个三角函数 分别为tan cos

这边整理成了一张图 自己看

_____________________________________________________________________________

输出
printf("π的近似值:%.12lf",a*b/2);
输出方式讲解

这行代码使用的printf函数来自于cstdio工具箱

"%"这个符号是控制符

这个符号后面的".12"是让输出数据保留12位小数

在这之后的"lf"是说明这是double类型

计算π

除以2是因为a*b是圆的周长 圆的周长是\pi d也可以理解为2\pi r

已知r=1 那么除以2就可以得出算好的π了

注意事项

这边输入的a是指把圆看成a边形

没有1边形和2边形

最少输入3 不然程序虽然不会报错 但会输出一些很小的值

这边给出输入1或2的输出:

π的近似值:-0.000000000001

结尾

MVP结算:

本期字数:1730

本期质量分:83

15赞更新Python 30赞更新c++

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值