だから私はこの問題をやろうとしています:
しかし、どこから始めればいいのか、正確に何を探しているのか、完全にはわかりません。
さらに、ゼロ(0)、非常に小さい(0.00001)、それほど小さくない(0.1)などのプログラム入力を期待する必要があると言われました。
参照としてhttp://en.wikipedia.org/wiki/E_%28mathematical_constant%29が与えられましたが、その式は問題の式とまったく同じではありません。
そして最後に、プログラムへの入力は少数のイプシロンであると言われました。たとえば、0.00001fと仮定できます。
現在の項の値がイプシロンを下回るまで、無限級数を追加し続けます。
しかし、全体として、それが何を意味するのか私にはわかりません。私はwikiの方程式をある程度理解しています。しかし、与えられた問題からどこから始めればよいのかわかりません。それを見て、私がCで使用しようとしている数式の種類、「E」とは何か、そしてそれがここで機能する場所を知っている人はいますか(つまり、数式内では、ユーザー入力であると想定されています)。
これまでのコード
#include <stdio.h>
#include <math.h>
//Program that takes in multiple dates and determines the earliest one
int main(void)
{
float e = 0;
float s = 0;
float ct = 1;
float ot= 1;
int n = 0;
float i = 0;
float den = 0;
int count = 0;
printf("Enter a value for E: ");
scanf("%f", &e);
printf("The value of e is: %f", e);
for(n = 0; ct > e; n++)
{
count++;
printf("The value of the current term is: %f", ct);
printf("In here %d\n", count);
den = 0;
for(i = n; i > 0; i--)
{
den *= i;
}
//If the old term is one (meaning the very first term), then just set that to the current term
if (ot= 1)
{
ct = ot - (1.0/den);
}
//If n is even, add the term as per the rules of the formula
else if (n%2 == 0)
{
ct = ot + (1.0/den);
ot = ct;
}
//Else if n is odd, subtract the term as per the rules of the formula
else
{
ct = ot - (1.0/den);
ot = ct;
}
//If the current term becomes less than epsilon (the user input), printout the value and break from the loop
if (ct < epsilon)
{
printf("%f is less than %f",ct ,e);
break;
}
}
return 0;
}
電流出力
Enter a value for E: .00001
The value of e is: 0.000010
The value of the current term is: 1.000000
In here 1
-1.#INF00 is less than 0.000010
ですから、皆さんのコメントに基づいて、そして私が言われたようにウィキペディアからの4番目の「混乱」方程式を使用して、これは私が思いついたコードです。私の頭の中の論理は、誰もが言っていることと一致しているようです。しかし、出力は私が達成しようとしているものではありません。このコードを見て、私が間違っている可能性があることを誰かが知っていますか?