需求分析
利用如下公式编程计算π的值,来满足计算的要求。
π/4 = 1 - 1/3 + 1/5 -1/7 + 1/9 …
对于精度的要求(1)计算200项得到的近似π;
(2)要求误差小于0.000001的π的近似值。
概要设计
对于上面的公式,需要判断它前面的符号,需要确定分母的大小增长,还要设计一个整型变量一个用于计数,设计另一个浮点型变量用于存储最后的运算结果。
在第二个精度要求中,除了上面中的变量之外,还要设置一个变量,用于存储上一次运算出来的π/4的结果,用于和这次的比较,从而判断是否满足题目的精度要求。
调试分析
在第一个程序的设计中,比较顺利,程序顺利的执行。但是在第二个程序的设计中,一个小问题费了好大的力气才调试出来。问题就出在fabs()和abs()中,一个小疏忽导致了程序调试了将近2个小时。fabs()是求浮点数的绝对值,abs()是求整数的绝对值。
详细设计和编码中国电信营销策略文献综述
对于上述公式,经过抽象分析得到以下规律:当它的顺序是奇数时,它前面的符号就是正数;当它的顺序是偶数时,它前面的符号就是负数。在解决这个问题上,我设置了一个int型变量n,它有两个作用,一来它可以用来设置计算的次数;二来用n%2来判断它的位置,是奇数还是偶数,从而确定符号是正数还是负数。程序中,还有一个float型的变量,它储存最好的结果即π/4,它的值每次循环的时候都是变化的。
在精度的第二个要求中,设计的思想基本与第一个是一样的,唯一的区别就是:需要判断本次运算的π值与上次运算的π值的差是否满足要求。我在程序中设置了一个临时变量temp来储存上次运算出来的sum的结果,用于和这次的sum进行比较,从而判断是否满足了要求,结束循环。我觉得在循环的设计上,我的设计还是比较巧妙的,在结束的时候将n值设为-1,下面的n++正好将n值变为0,符合while()的结束条件,退出循环。
本文来自辣.文,论-文·网原文请找腾讯752018766
//---------计算200项后得到的Pi的值----------//
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int n;
float sum=0;
for(n=1;n<=200;n++)
{
float a=2*n-1;
if(n%2!=0) //奇偶的校验,从而执行不同的算式
sum=sum+1/a;2716