【问题标题】:Approximate Pi/Taylor series; prompt user input近似的 Pi/Taylor 系列;提示用户输入
【发布时间】:2015-12-30 06:08:59
【问题描述】:

我还有一个作业问题。这次我知道我的大致情况,但我可以看到我的代码有一些明显的问题。最近我把钥匙弄丢了,有点像这样。我不知道我的代码到底哪里出错了,但我有一个好主意,我希望你能帮我找到它。

问题是使用泰勒级数来近似 pi。 现在,我的问题不完全是让它近似以使其等于 pi。而是使用用户输入的前 N ​​个项 来近似 pi。例如,如果我输入 2,那么我应该遍历前 2 个,因为 N=2。我的问题是 printF 表示它的方式(并且变量似乎未初始化)。这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{ 
   //program to calculate series of numbers equal to pi/4

   //declare variables

   int num_Terms;
   int sign= 1;
   int n;
   float sum= 0.0;
   float next_Term;
   float final_sum;

   //prompt user for input

   printf("Enter a value for integer n:  ");
   scanf("%i",&n);

   //perform calculations

   for(n = 1; n<= num_Terms; n=n+1) {
      sum= sum+next_Term;
      next_Term = sign*(1.0/(2*n-1));
      sign = sign*-1;
   }
   final_sum = sum*4;

   //display result
   printf("\n 4 * %f = %f\n",sum, final_sum);

   return 0;
}

【问题讨论】:

  • scanf("%i",&amp;num_Terms); sign = -sign;
  • 不要粗鲁,但这会产生更多问题。对不起。
  • 我同意负号。
  • 它将之前未初始化的警告变成错误。

标签: c user-input pi taylor-series


【解决方案1】:

我不知道我的代码到底哪里出错了

首先,您将值扫描到变量 n 中,然后将其用作迭代器变量。将其更改为 num_Terms。这应该可以解决您不考虑术语数量的主要问题。

然后,最好在使用变量之前对其进行初始化,这样可以消除您收到的警告。

int main(void)
{ 
   //program to calculate series of numbers equal to pi/4

   //declare variables

   int   num_Terms = 0;
   int   sign      = 1;
   int   n         = 0;
   float sum       = 0;
   float next_Term = 0;
   float final_sum = 0;

   //prompt user for input

   printf("Enter a value for integer n:  ");
   scanf("%i",&num_Terms);

   //perform calculations

   for(n = 1; n<= num_Terms; n=n+1) {
     //not too sure if you need to reverse this order of calculation of sum
      sum = sum + next_Term;
      next_Term = sign * (1.0/(2*n-1));
      sign = sign * -1;
   }
   final_sum = sum * 4;

   //display result
   printf("\n 4 * %f = %f\n",sum, final_sum);

   return 0;
}

【讨论】:

  • 以为会是这样。一些简单的东西。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-22
  • 2015-12-16
  • 1970-01-01
  • 2019-09-25
  • 2019-08-18
  • 2021-03-20
  • 1970-01-01
相关资源
最近更新 更多