PDA

Visualizza la versione completa : [c]fibonacci


spode
24-07-2010, 18:20
#include<stdio.h>
#include<stdlib.h>

main(){
int prepreced,preced,i=0,numero,fibo;
do{
printf("ATTENZIONE: INSERIRE NUMERI ALTI NON FA BENE AL PC...\2\nInserisci n:");
scanf("%d",&numero);} while(numero<1);

prepreced=0;preced=1;
do {
i=prepreced+preced;

preced=i;
prepreced=preced;

printf("\nI numeri prima del numero inserito e' %d nella successione di Fibonacci\n",i);
} while(i>=numero);

printf("Premi \"X\" in alto a destra per uscire!\n\n");
main();

system("pause");


}

simo_us
24-07-2010, 22:03
A parte che solo con il codice non si capisce di cosa hai bisogno, per la successione di fibonacci puoi usare una funzione ricorsiva


int fibo(int fb)
{
if(fb==0 || fb ==1)
fb = 1;
else
fb = fibo(fb-1) + fibo(fb-2);
return fb;
}

spode
25-07-2010, 11:42
grazie, ma in realtà cerco la correzione dell' esercizio

secondo me è giusto, ma non secondo il pc

LeaderGL
25-07-2010, 11:50
che errore ti da il "PC"?

Alex'87
25-07-2010, 11:51
Originariamente inviato da spode

#include<stdio.h>
#include<stdlib.h>

main(){
Il main va dichiarato "int".


Originariamente inviato da spode

main();

system("pause");
} Richiamare il main così è una cosa bruttissima! E bruttissima è anche la chiamata a system (che comunque non verrà MAI fatta).

simo_us
25-07-2010, 14:06
grazie, ma in realtà cerco la correzione dell' esercizio
Ma se neanche dici qual'è il tuo problema.. :madai!?:

secondo me è giusto, ma non secondo il pc
Decidetevi... :cry: Il programma é sbagliato perché lo é la sua logica.


i = 0;
...
prepreced=0;preced=1;

do
{
i=prepreced+preced;
preced=i;
prepreced=preced;

printf("\nI numeri prima del numero inserito e' %d nella successione di Fibonacci\n",i);

}while(i >= numero);

:confused: Il calcolatore fa i calcoli che tu gli dici di fare... i sará sempre 1.

spode
25-07-2010, 14:40
hai ragione. non me ne ero accorto :zizi:

l'errore che mi dà il pc? allegato! :)allegato! (http://rapidshare.com/files/408966226/ex_37_pag_91.exe)

il codice aggiornato, ma sempre non funzionante...


#include<stdio.h>
#include<stdlib.h>

main(){
int prepreced,preced,i=0,numero,fibo;
do{
printf("ATTENZIONE: INSERIRE NUMERI ALTI NON FA BENE AL PC...\2\nInserisci n:");
scanf("%d",&numero);} while(numero<1);

prepreced=0;preced=1;
do {
i=prepreced+preced;

preced=i;
prepreced=preced;

printf("I numeri prima del numero inserito e' %d nella successione di Fibonacci\n",i);
i++;
} while(i>=numero);

printf("Premi \"X\" in alto a destra per uscire!\n\n");
main();
}

simo_us
25-07-2010, 16:24
il codice aggiornato, ma sempre non funzionante
non é che togliendo la system hai risolto chissá cosa.. :madai!?:

simo_us
25-07-2010, 17:32
Comunque ritornando alla funzione che ti ho scritto come prima risposta, é leggermente sbagliata, con una piccola correzione


int fibo(int fb)
{
if(fb == 0 || fb == 1)
return fb;
else
return fibo(fb-1) + fibo(fb-2);
}

é decisamente meglio.

spode
25-07-2010, 18:01
0k. comunque ho inserito
i++;
quindi cambia molto. comunque perchè non funzionano in generale i cicli for (uso code block 8, con testo copiato -e non funzionante- da devc++), a quanto mi sembra di notare :) ?

Loading