2011-03-02 55 views
7

Mi pregunta es: Tengo una matriz. Necesito calcular el número de Fibonacci correspondiente a cada entrada en esa matriz, y devolver esos valores a otra matriz. me siguen dando un C2109 "Subíndice requiere matriz o puntero de tipo", y sé donde viene, y sé lo que significa, pero no sé cómoCálculo de números de Fibonacci en el código de C++

  1. arreglo él
  2. maquillaje mi código funciona

En este momento, no hace nada. No estoy seguro de si estoy devolviendo algún valor de mi función de Fibonacci o si estoy llamando correctamente en mi función principal. Lo modifiqué de lo que originalmente era. Aquí está mi nuevo código:

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; 
} 

¡Se agradece cualquier ayuda!

+9

Es refrescante ver a alguien que realmente ha tratado de resolver el problema antes de pedir - buen trabajo! –

+0

@Anders K. Sí, +1 para intentar y luego preguntar. – wheaties

+0

Gracias :) Estaba tan preocupado de publicar una pregunta en un sitio como este podría resultar en burlarse de: P – Sam

Respuesta

4

Creo que el problema es que esta línea:

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

está tratando de llamar a la función fib incorrectamente. Aquí tiene la idea correcta, pero para llamar a una función en C++ necesita usar paréntesis regulares en lugar de corchetes. Creo que esta línea debe ser similar

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

Como seguimiento, la implementación de fib parece que podría ser incorrecta. En particular, está tomando dos parámetros correspondientes a las matrices, pero nunca usa esos valores directamente. En cambio, estás construyendo una nueva matriz local de todos los números de Fibonacci. Es probable que desee que esta función devuelva el número de Fibonacci apropiado que genera.

Espero que esto ayude, y la mejor de las suertes en su viaje a C++!

+0

¡Muchas gracias! :) – Sam

2

Además de lo que templatetypedef dijo que solo está suministrando un argumento a la función fib, pero declaró que toma dos argumentos. Además, el fib() no devuelve un valor: su vacío declarado.

fib(p [i][j]); 

Hay una falta punto y coma también aquí

sum = fib[ m - 1] + fib[ m - 2] 
Cuestiones relacionadas