7

私の質問は次のとおりです。マトリックスがあります。その行列の各エントリに対応するフィボナッチ数を計算し、それらの値を別の行列に返す必要があります。C2109「添え字には配列またはポインター型が必要です」というメッセージが表示され続けます。それがどこから来ているのか、その意味はわかっていますが、方法がわかりません

  1. 修理する
  2. 私のコードを機能させます。

今のところ、それは何もしません。フィボナッチ関数から値を返しているのか、メイン関数で正しく呼び出しているのかさえわかりません。元の状態から改造しました。これが私の新しいコードです:

const int     row1 = 3;
const int     col1row2 = 3;
const int     col2 = 3;

int fibonacci (int [][col2]);

void main()
{
     int   p[row1][col2],  f [row1][col2];
     int sum; 
     input (a,b); 

     cout<<"The Fibonacci Matrix is:   ";
     cout<<fibonacci(p);    
     for ( int  i = 0; i < row1; i++)
     {
          for ( int  j = 0; j < col2; j++)
              {
                    sum = f[i][j]; 
                    f[i][j] = fibonacci(p);           
              }
     }
     cout<<endl;
}


int fibonacci (int z[][col2])
{
     int   fib [100]  =  {0 , 1};
     int sum = 0;

     for ( int m = 2; m < 100; m++)
     {
           sum =  fib[m-1] + fib[m-2];
           fib[m] = sum;
     }
     return sum;
     cout<<endl;
}

どんな助けでも大歓迎です!

4

2 に答える 2

4

問題は、次の行だと思います。

f [i][j] = fib [ p [i][j] ];

fib関数を間違って呼び出そうとしています。ここで正しい考えを持っていますが、C++ で関数を呼び出すには、角括弧ではなく通常の括弧を使用する必要があります。この行は次のようになるはずだと思います

f [i][j] = fib ( p [i][j] );

フォローアップとして、あなたの実装はfib間違っているようです。特に、行列に対応する 2 つのパラメーターを取り込んでいますが、これらの値を直接使用することはありません。代わりに、すべてのフィボナッチ数の新しいローカル配列を構築しています。おそらく、この関数が生成する適切なフィボナッチ数を返すようにしたいでしょう。

これがお役に立てば幸いです。C++ への旅がうまくいきますように!

于 2011-03-02T01:54:05.707 に答える
2

templatetypedef が言ったことに加えて、fib 関数に引数を 1 つだけ指定していますが、引数を 2 つ取るように宣言しています。また、 fib() は値を返しません-宣言されたvoidです。

fib( p [i][j] );

ここにもセミコロンがありません

sum = fib[ m - 1]  +  fib[ m - 2]
于 2011-03-02T02:03:29.550 に答える