2016-04-10 13 views
0

Hallo, ich habe Probleme mit diesem Programm in C++ auf Fibonacci, ich habe versucht, auf google die fehler zu suchen, aber ich habe keine lösung/erklärung gefunden.Fibonacci C++ - ungültige Konvertierung von 'int' zu 'int *' und Initialisierung des Arguments 2/3 von 'int fibo (int, int *, int *)'

Es ist der Code:

#include <stdio.h> 
#include <stdlib.h> 
#include <iostream> 
#include <cmath> 
using namespace std; 

int fibo(int,int*,int*); 
int conta=0; 

int main() { 
    int n,m,f; 
    int fibN=1; 
    int fibNMeno1=0; 
    cout << "Calcolo del numero di Fibonacci di indice n \n \n" << endl; 
    cout << "Introdurre n (positivo e minore di 47:" << endl; 
    cin >> n; 
    n=abs(n/1); 

    if (n<1) { 
     fibN=0; 
    } 
    else { 
     fibo(n,fibN,fibNMeno1); 
    } 

    cout << "\n Fibonacci di indice " << n << "vale: " << fibN << endl; 
    cout << "\n numero di chiamate ricorsive: " << conta << "\n\n" << endl; 
} 

int fibo(int n, int*pfn, int* pfnMeno1) { 
    int t; 
    int tFn,tFnMeno1,tF; 
    conta++; 
    if (n==1) { 
     *pfn=1; *pfnMeno1=0; return 1; 
    } 
    else { 
     t=n%2; n=n/2; 
     fibo(n,pfn,pfnMeno1); 
     tFn=(*pfn)*(*pfn)+2*(*pfn)*(*pfnMeno1); 
     tFnMeno1=(*pfn)*(*pfn) + (*pfnMeno1)*(*pfnMeno1); 
     if(t) { 
      tF=tFn; 
      tFn=tFn + tFnMeno1; 
      tFnMeno1=tF; 
     } 
     *pfn=tFn; 
     *pfnMeno1=tFnMeno1; 
     return 3; 
    } 

} 

Wo ist der Fehler? Wie funktioniert es bei C++ mit *?

fibonacci.cpp: In function ‘int main()’: 
    fibonacci.cpp:23:22: error: invalid conversion from ‘int’ to ‘int*’ [-fpermissive] 
    fibo(n,fibN,fibNMeno1); 
         ^
    fibonacci.cpp:7:5: note: initializing argument 2 of ‘int fibo(int, int*, int*)’ 
    int fibo(int,int*,int*); 
     ^
    fibonacci.cpp:23:22: error: invalid conversion from ‘int’ to ‘int*’ [-fpermissive] 
    fibo(n,fibN,fibNMeno1); 
         ^
    fibonacci.cpp:7:5: note: initializing argument 3 of ‘int fibo(int, int*, int*)’ 
    int fibo(int,int*,int*); 

Antwort

0

fibN/fibNMeno1 hat Int-Typ, aber Ihre Funktion req. int * type, was ein Zeiger auf einen int ist.

Wenn Sie einen int als int geben wollen * Sie eine Adresse (& Symbol) Ihrer lokalen Variablen nehmen müssen, wie folgt aus:

fibo(n,&fibN,&fibNMeno1); 
+0

Vielen Dank! – Tryneed

0

, weil Sie fibo(n,&fibN,&fibNMeno1) statt fibo(n,fibN,fibNMeno1) wollen könnte ...

Ihre fibo Funktion nimmt eine int und zwei Zeiger. Du hast mit drei Ints angerufen. Daher kann der Compiler keine implizite Konvertierung durchführen.

+0

Vielen Dank !! – Tryneed

Verwandte Themen