0

文字通り、「フィボナッチ数列は 0、1、1、2、3、5、8、13、… です。最初の 2 つの項は ​​0 と 1 で、その後の各項は前の 2 つの項の合計です。つまり、Fib[n] = Fib[n – 1] + Fib[n – 2] です。この情報を使用して、フィボナッチ数列の n 番目の数値を計算する C++ プログラムを作成します。このプログラムでは、ユーザーが対話的に n をプログラムに入力します。たとえば、n = 6 の場合、プログラムは値 8 を表示する必要があります。」

前の質問への回答をありがとう、私はそれを私の完全なコードに入れました。ユーザーがプログラムを続行するかどうかを選択できることを意味するループがありました。以前は機能していましたが、今は何も起こりません。誰でもこれに光を当てることができますか?ありがとう

{int N;

char ans = 'C';

while (toupper(ans) == 'C')
{
    cout<<"This program is designed to give the user any value of the Fibonacci Sequence that they desire, provided the number is a positive integer.";//Tell user what the program does

    cout<<"\n\nThe formula of the Fibonacci Sequence is;   Fib[N] = Fib[N – 1] + Fib[N – 2]\n\n"; //Declare the Formula for the User

    cout<<"Enter a value for N, then press Enter:"; //Declare Value that the User wants to see

    cin>>N;//Enter the Number

    if (N>1) {
            long u = 0, v = 1, t;

            for(int Variable=2; Variable<=N; Variable++)
            {
                t = u + v;
                u = v;
                v = t;
            } //Calculate the Answer

        cout<<"\n\nThe "<<N<<"th Number of the Fibonacci Sequence is: "<<t; //Show the Answer
    }

    if (N<0) {
        cout<<"\n\nThe value N must be a POSITIVE integer, i.e. N > 0"; //Confirm that N must be a positive integer. Loop.
    }
    if (N>100) {
        cout<<"\n\nThe value for N must be less than 100, i.e. N < 100. N must be between 0 - 100.";//Confirm that N must be less than 100. Loop.
    }
    if (N==0) {
        cout<<"\n\nFor your value of N, \nFib[0] = 0"; //Value will remain constant throughout, cannot be caculated through formula. Loop.
    }
    if (N==1) {
        cout<<"\n\nFor your value of N. \nFib[1]=1";//Value will remain constant throughout, cannot be caculated through formula. Loop.
    }

  cout << "\n\nIf you want to select a new value for N, then click C then press Enter. If you want to quit, click P then press Enter: ";
    cin >> ans;
}


return 0;

}

4

2 に答える 2

1

必要なのは、下にcout2 行を配置することだけです。余分な {} は必要ありませんが、害はありません。

于 2013-03-03T20:42:24.603 に答える
0

これはあなたのメインループです:

for(int i=2; i<=N; i++)
{
    t = u + v;
    u = v;
    v = t;

    cout<<t<<"is your answer";
}

ループ内のすべてのパスで答えが出力されていることは明らかです。

印刷をループの外に移動するだけです...すべての計算が完了したら、一度だけ印刷されます。

for(int i=2; i<=N; i++)
{
    t = u + v;
    u = v;
    v = t;
}
cout<<t<<"is your answer";

あなたのコードに見られるその他の問題:

関数を宣言します。

unsigned long long Fib(int N);

しかし、それはまったく定義も使用もされていません。なぜこの宣言がここにあるのですか?(それを除く)

中かっこの冗長セットがあります。

else {
        {
            unsigned long long u = 0, v = [....]

中括弧の直後にさらに中括弧を付ける必要はありません。

于 2013-03-03T20:43:56.180 に答える