0

フィボナッチ数列の特定の数値を計算する C プログラムを作成していますが、配列を配列として返すのに問題があります....

私は何を間違っていますか?

int フィボナッチ (int シーリング)
{
  int カウンター;
  int num1 = 1, num2 = 1;
  static int fibArray[1000];
  for (カウンター = 1; カウンター < 天井; カウンター+=2)
    {
      fibArray[カウンター] = num1;
      fibArray[カウンター + 1] = num2;
      num2 += num1;
      num1 += num2;
    }
  &(fibArray); を返します。
}

エラーも表示されます:

fibonacci.c:28: 警告: return はキャストなしでポインターから整数を作成します

?

4

4 に答える 4

3

配列へのポインターを返すため、戻り値の型はint*. サンプルコードは次のとおりです。

int* fibonacci(int ceiling) //Modified return type
{
  int counter;
  int num1 = 1, num2 = 1;
  static int fibArray[1000];
  for (counter = 1; counter < ceiling; counter+=2)
    {
      fibArray[counter] = num1;
      fibArray[counter+1] = num2;
      num2 += num1;
      num1 += num2;
    }
  return (fibArray); //Return the address of the array's starting position
}
于 2011-02-27T06:47:25.740 に答える
2

から 1 つの要素を返したいfibArrayのですね。その場合、 を使用します。return fibArray[...];ここ...で、 は要素のインデックスです。

于 2011-02-27T06:41:43.413 に答える
0

配列は必要ありません。現在の値と以前の値を保持する2つの整数が必要です。次に、次のようにします。

newValue = previousValue + newValue;
previousValue = newValue - previousValue;`

設定する必要があります。制限に達したら、newValue を返すだけです。

配列全体を返したい場合(シーケンス全体ではない「フィボナッチ数列の特定の数を計算する」と言っています)。関数の戻り値の型を int* にして、配列を使用します。

于 2011-02-27T09:29:06.577 に答える
-1
//you dont need all the "includes" I have in here. These are just a basic format I work with. This should get you going if you arent going already. cheers. :) 

#include<iostream>
#include<cstdlib>
#include<iomanip>
#include<cmath>
#include<stdio.h>
#include<cctype>
#include<list>
#include<string>

using namespace std;
int main()
//-------------------------------declaration of variables----------------------------------
{
   int num1, num2;
   int initial_value, final_value;
//-----------------------------------------inputs------------------------------------------
   cout << "What is your first number? :";
   cin  >> num1;
   initial_value = num1;
   cout << "What is your second number? :";
   cin >> num2;
   final_value = num2;
//-----------------------------------------dasloop----------------------------------------
   do
   {
       final_value = initial_value + final_value;
       initial_value = final_value - initial_value;
       cout  <<  final_value  <<  endl;
   }
   while(final_value <= 1000);

//---------------------------exits perfectly when greater than 1000------------------------
   cout << endl << endl;
   system("pause");
   return 0;
}
//I have it exit at 1000 because its a nice round number that allows you enough room
//to see the code, and sequence are both correct. 
于 2011-10-10T09:45:36.853 に答える