Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-01-2005, 18:22   #1
supermario
Senior Member
 
L'Avatar di supermario
 
Iscritto dal: Oct 2001
Messaggi: 7906
Quesito C++ semplice

Salve

ho questo codice

Codice PHP:
using std::cout;
using std::cin;
using std::endl;

unsigned long fibonacciunsigned long );

int main()
{
    
unsigned long resultnumber;
    
unsigned long i;

    
cout << "Enter an integer: ";
    
cin >> number;
    
result fibonacci);
    for (
i++ , i==number )
    {
    
cout << "Fibonacci(" << << ") = " << result << endl;
    }
    return 
0;
}

// Recursive definition of function fibonacci
unsigned long fibonacciunsigned long n )
{
   if ( 
== || == )  // base case
      
return n;
   else                     
// recursive case
      
return fibonacci) + fibonacci);


dove sbaglio??commetto un errore logico?

per chi nn l'avesse capito voglio che il programma mi scriva la successione di fibonacci fino al numero che imposto io

grazie
supermario è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2005, 18:32   #2
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Di errori ne commetti almeno tre.

Primo: la sintassi che usi per il for, non è quella del C++.
Prendi il libro e studia quella corretta.

Secondo: chiami fibonacci una volta sola, all'esterno del ciclo for anziché all'interno, e per di più su una variabile non inizializzata.
Fa' più attenzione quando scrivi il tuo codice.

Terzo: implementi fibonacci ricorsivamente, quando esiste un algoritmo iterativo immediatamente applicabile.
Le implementazioni ricorsive sono dispendiose dal punto di vista dell'occupazione della memoria: se puoi usare un'implementazione iterativa, fàllo.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2005, 18:52   #3
beppegrillo
Senior Member
 
L'Avatar di beppegrillo
 
Iscritto dal: Mar 2004
Messaggi: 1455
Quote:
Originariamente inviato da Ziosilvio

Terzo: implementi fibonacci ricorsivamente, quando esiste un algoritmo iterativo immediatamente applicabile.
Le implementazioni ricorsive sono dispendiose dal punto di vista dell'occupazione della memoria: se puoi usare un'implementazione iterativa, fàllo.
L'esempio dell'individuazione del numero di fibonacci è il classico che i prof fanno per far capire la ricorsione ai propri studenti, quindi penso sia quello il motivo principale dello sviluppo di tale programma
E' vero che la ricorsione è generalmente più dispendiosa dell'approccio iterativo, ma in molti casi è più immediata e la perdita di memoria non è tale da preferire l'iterazione.
__________________
Ciao ~ZeRO sTrEsS~
beppegrillo è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2005, 19:24   #4
chetidolanimale
Senior Member
 
Iscritto dal: Mar 2002
Messaggi: 939
nel momento in cui chiama fibonacci(i) la variabile i non è ancora inizializzata o sbaglio?
[edit]ops,già detto
chetidolanimale è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2005, 19:41   #5
chetidolanimale
Senior Member
 
Iscritto dal: Mar 2002
Messaggi: 939
prova con questo:

#include<iostream>
using namespace std;

unsigned long fibonacci( unsigned long );

int main()
{
unsigned long number;

cout << "Enter an integer: ";
cin >> number;
for (unsigned long i = 0 ; i <= number ; i++)
{
cout << "Fibonacci(" << i << ") = " << fibonacci(i) << endl;
}
return 0;
}

// Recursive definition of function fibonacci
unsigned long fibonacci( unsigned long n )
{
if ( n == 0 || n == 1 ) // base case
return n;
else // recursive case
return fibonacci( n - 1 ) + fibonacci( n - 2 );
}

"dovrebbe" andare meglio,però consuma davvero un sacco di risorse, avevo provato a inserire 1000 ,ma arrivato a fibonacci(40) ho chiuso il programma per la disperazione...
chetidolanimale è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2005, 19:43   #6
chetidolanimale
Senior Member
 
Iscritto dal: Mar 2002
Messaggi: 939
2 domandine
1) qual'è la necessità di dichiarare "number" come unsigned long?
2) se nel ciclo for dichiaro i come int, cosa cambia in pratica?
chetidolanimale è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2005, 19:49   #7
supermario
Senior Member
 
L'Avatar di supermario
 
Iscritto dal: Oct 2001
Messaggi: 7906
come mi comporto con l'iteratività?


grazie x l'aiuto
supermario è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2005, 20:14   #8
chetidolanimale
Senior Member
 
Iscritto dal: Mar 2002
Messaggi: 939
forse questa può andare:
Codice PHP:
#include<iostream>
using namespace std;

int main()
{
    
unsigned long number;

    
cout << "Enter an integer: ";
    
cin >> number;

    
unsigned long a=0b=1
    
cout << "Fibonacci(0) = " << << endl;
    if(
number>0cout << "Fibonacci(1) = " << << endl;

    
unsigned long swap;
    for (
unsigned long i <= number i++)
    {
       
swap=a;
       
a=b;
       
b+=swap;
       
cout << "Fibonacci(" << << ") = " << << endl;
    }
    return 
0;

a me funziona,però sono abbastanza niubbo in c++, quindi magari senti pure cosa dice qualcun'altro con + esperienza

Ultima modifica di chetidolanimale : 10-01-2005 alle 21:41.
chetidolanimale è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2005, 20:28   #9
supermario
Senior Member
 
L'Avatar di supermario
 
Iscritto dal: Oct 2001
Messaggi: 7906
che palle nn posso eseguire il .exe che subito winxp me lo chiude
supermario è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2005, 20:31   #10
chetidolanimale
Senior Member
 
Iscritto dal: Mar 2002
Messaggi: 939
è normale...
prova ad aprire il prompt dei comandi e ad eseguire il programma da lì
chetidolanimale è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2005, 20:44   #11
supermario
Senior Member
 
L'Avatar di supermario
 
Iscritto dal: Oct 2001
Messaggi: 7906
sisi col pront so farlo ma mi rompe farlo sempre


su win me va senza problemi invece....no??
supermario è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2005, 20:58   #12
chetidolanimale
Senior Member
 
Iscritto dal: Mar 2002
Messaggi: 939
ho letto giusto ieri sul forum che una delle soluzioni per ovviare al problema è includere il file <stdlib.h> e aggiungere giusto prima del return 0 finale questa riga: system("PAUSE");
chetidolanimale è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2005, 21:19   #13
chetidolanimale
Senior Member
 
Iscritto dal: Mar 2002
Messaggi: 939
forse in c++ sarebbe più corretto fare una

#include<cstdlib>
using namespace std;

senza l'h finale nel nome della libreria
chetidolanimale è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2005, 21:24   #14
supermario
Senior Member
 
L'Avatar di supermario
 
Iscritto dal: Oct 2001
Messaggi: 7906
good
supermario è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:33.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v