作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
可以使用下面给出的系列计算 pi 的近似值:
pi = 4 * [ 1 - 1/3 + 1/5 - 1/7 + 1/9 … + ((-1)^n)/(2n + 1) ]
用这个数列写一个C++程序来计算圆周率的近似值。该程序采用输入 n,确定 pi 值的近似值中的项数,并输出近似值。包括一个循环,允许用户为新值 n 重复此计算,直到用户说她或他想结束程序。
预期结果是:输入要近似的项数(或零以退出):1个使用 1 项的近似值为 4.00。输入要近似的项数(或零以退出):2个使用 2 项的近似值为 2.67。输入要近似的项数(或零以退出):0
我现在可以得到正确的结果,但我不知道如何包含一个循环,允许用户为新值 n 重复此计算,直到用户说她或他想结束程序。
#include <stdio.h>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{ int n; double pi, sum;
do {
cout << "Enter the number of terms to approximate (or zero to quit):" << endl;
cin >> n;
if (n >0)
{
double sum=1.0;
int sign=-1;
for (int i=1; i <=n; i++) {
sum += sign/(2.0*i+1.0);
sign=-sign;
}
pi=4.0*sum;
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
cout << "The approximation is " << pi << " using "<< n << " terms" << endl;
}
} while(n>0);
cout << endl;
return 0;
}
最佳答案
你有错误的初始化:
double sum=0.0;
int sign=1;
应该是
double sum = 1.0;
int sign = -1;
循环也错了(有错别字?),应该是
for (int i = 1; i < n; i++) { /* please, notice "i < n" and "{" */
sum += sign / (2.0 * i + 1.0);
sign = -sign; /* more readable, IMHO than sign *=-1; */
}
pi = 4.0 * sum; /* you can well move it out of the loop */
编辑如果你想重复计算一个常见的做法是提取一个函数(不要把所有东西都塞进一个main
):
double compute(int n) {
if (n < 0)
return 0.0;
double sum = 1.0;
int sign = -1;
for (int i = 1; i < n; i++) {
sum += sign / (2.0 * i + 1.0);
sign = -sign; /* more readable, IMHO than sign *=-1; */
}
return 4.0 * sum;
}
EDIT 2 main
函数可能是这样的:
int main() {
int n = -1;
/* quit on zero */
while (n != 0) {
cout << "Enter the number of terms to approximate (or zero to quit):" << endl;
cin >> n;
if (n > 0)
cout << "The approximation is " << compute(n) << " using "<< n << " terms" << endl;
}
}
关于c++ - 使用泰勒方法 C++ 和循环计算 Pi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38163899/
考虑函数 y=1/((1-x^5)(1-x^7)(1-x^11)) WolframAlpha 在几秒钟内计算出 MacLaurin 级数展开的前 1000 个元素: https://www.wolfr
(C) 计算序列 y = x - x3/3! + x5/5! - x7/7! + ..... 其中停止标准是 | xi/i! | #include int fact(int x){ if(x
我是一名优秀的程序员,十分优秀!