Вычисление чисел Фибоначчи в коде C ++ - PullRequest
7 голосов
/ 02 марта 2011

Мой вопрос: У меня есть матрица. Мне нужно вычислить соответствующее число Фибоначчи для каждой записи в этой матрице и вернуть эти значения в другую матрицу. Я продолжаю получать 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;
}

Любая помощь приветствуется!

Ответы [ 2 ]

4 голосов
/ 02 марта 2011

Мне кажется, проблема в том, что эта строка:

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

Пытается вызвать функцию fib неправильно. Здесь у вас есть правильная идея, но для вызова функции в C ++ вам нужно использовать обычные скобки, а не квадратные скобки. Я думаю, что эта строка должна выглядеть как

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

В качестве продолжения, ваша реализация fib кажется неправильной. В частности, вы берете два параметра, соответствующих матрицам, но вы никогда не используете эти значения напрямую. Вместо этого вы создаете новый локальный массив всех чисел Фибоначчи. Возможно, вы захотите, чтобы эта функция возвращала соответствующее число Фибоначчи, которое она генерирует.

Надеюсь, что это поможет, и удачи в вашем путешествии в C ++!

2 голосов
/ 02 марта 2011

В дополнение к тому, что templatetypedef сказал, вы предоставляете только один аргумент функции fib, но объявили, что он принимает два аргумента.Кроме того, fib () не возвращает значение - объявленное значение void.

fib( p [i][j] );

Здесь также отсутствует точка с запятой

sum = fib[ m - 1]  +  fib[ m - 2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...