PDA

View Full Version : un aiutino per un algoritmo


xxx Alcatraz xxx
08-01-2004, 18:01
Allora devo fare una cosa facile facile ma che non so perchè non mi viene ora :D
Devo fare in pascal l'algoritmo della successione di Fibonacci.
In pratica la successione è questa 1,1,2,3,5,8,13... (il numero sucessivo è la somma dei due precedenti).

Qualcuno sa farmelo in Pascal, o almeno quale è l'agoritmo?

thx!

ENGINE
08-01-2004, 18:03
a cosa serve in pratica la successione di Fibonacci scusa ?

xxx Alcatraz xxx
08-01-2004, 18:05
E che me ne frega a me! :D
Serve alla prof, per vedere se siamo capaci di trovare l'agoritmo.
Il testo del problema è: Calcolare la somma dei primi n termini di questa successione: 1,1,2,3,5,8,13…(successione di Fibonacci)

Xfree
08-01-2004, 18:08
azz...
se trovo il libro di informatica te la posto :p (dopo due anni che non programmo più mi sono anche scordato cos è il C :p )

ingpeo
08-01-2004, 18:09
in pseudocodice:

per i che va da 0 a n:
a(i)=a(i-1)+a(i-2)

ingpeo
08-01-2004, 18:11
Originariamente inviato da ingpeo
in pseudocodice:

per i che va da 0 a n:
a(i)=a(i-1)+a(i-2)
Bisogna stare attenti ai primi 2 numeri, metti un if i<2 then a(i)=1

ENGINE
08-01-2004, 18:14
Originariamente inviato da Xfree
azz...
se trovo il libro di informatica te la posto :p (dopo due anni che non programmo più mi sono anche scordato cos è il C :p )


se parli di codice gli serviva in pascal tanto ;)

xxx Alcatraz xxx
08-01-2004, 18:16
ingpeo, grazie mille!
Purtroppo non è che ci ho capito moltissimo :(
Io ho fatto così:
program fibonacci;
var i,a,n:integer;
begin
writeln('Inserisci un numero');
readln(n);
a:=1;
for i:=0 to n do
a:=a*(i-1)+a*(i-2);
writeln(a);
readln
end.

Ma mi da come risultato zero.

ingpeo
08-01-2004, 18:18
Originariamente inviato da xxx Alcatraz xxx
ingpeo, grazie mille!
Purtroppo non è che ci ho capito moltissimo :(
Io ho fatto così:
program fibonacci;
var i,a,n:integer;
begin
writeln('Inserisci un numero');
readln(n);
for i:=0 to n do
a:=a*(i-1)+a*(i-2);
writeln(a);
readln
end.

Ma mi da come risultato zero.
Ma avete fatto le array?
Se no ti servono delle variabili di appoggio.
Dimmi che te lo passo.

Xfree
08-01-2004, 18:19
Originariamente inviato da ENGINE
se parli di codice gli serviva in pascal tanto ;)

si ma l'algoritmo non ci vuole niente a convertilo in pascal o viceversa ( o almeno io non ho mai avuto grossi problemi)

dooka
08-01-2004, 18:19
a=0
b=1

repeat
c=a+b
a=b
b=c
until keypressed


(?)

xxx Alcatraz xxx
08-01-2004, 18:20
Si abbiamo iniziato proprio oggi gli array, guardacaso :D

Xfree
08-01-2004, 18:21
ho trovato qualcosa fatto in pascal qui http://www.vis-ingenii.com/pagine/tutorials/programmazione/logica/pagine/tut3/fibonacci.htm

vedi se ti può essere utile

Xfree
08-01-2004, 18:21
Originariamente inviato da xxx Alcatraz xxx
Si abbiamo iniziato proprio oggi gli array, guardacaso :D

e allora non è che per caso la prof vi ha assegnato l'esercizio per verificare se li avevate capiti? :p

ingpeo
08-01-2004, 18:23
Originariamente inviato da Xfree
ho trovato qualcosa fatto in pascal qui http://www.vis-ingenii.com/pagine/tutorials/programmazione/logica/pagine/tut3/fibonacci.htm

vedi se ti può essere utile
Mii che lungo!
Per l'algoritmo semplice semplice bastano meno righe.

ingpeo
08-01-2004, 18:26
Originariamente inviato da Xfree
e allora non è che per caso la prof vi ha assegnato l'esercizio per verificare se li avevate capiti? :p
E allora te lo metto in pseudocodice così studi un po':p

variabili
A: array[100]
i,n=integer


leggi n (max 100)

a[1]=1
a[2]=1
for i=3 to n do
a[i]=a[i-1]+a[i-2]

scrivi a[n]

xxx Alcatraz xxx
08-01-2004, 18:34
ingpeo, per favoreee sto impazzendo! adesso ho fatto questo, ke pero non funziona...
program fibonacci;
var i,n,tmp,secondo,primo:integer;
begin
writeln('Inserisci un numero');
readln(n);
primo:=0;
secondo:=1;
for i:=1 to n do
begin
tmp:=secondo;
secondo:=primo+secondo;
primo:=tmp;
end;
writeln(secondo);
readln
end.

Xfree
08-01-2004, 18:36
Originariamente inviato da ingpeo
Mii che lungo!
Per l'algoritmo semplice semplice bastano meno righe.

e infatti a fondo pagina c'è la versione ricorsiva :p

xxx Alcatraz xxx
08-01-2004, 18:39
Regà per favore, se domani non porto sto minchione di Fiboncci so **zzi amari mia! :(
Per favoree, help meeee.

PS
Sto cominciando a sclerare:nera:

PPS
La funzione ricorsiva non mi servirebbe a nulla dato che non abbiamo ancora fatto le funzioni :(

ingpeo
08-01-2004, 18:45
Li incrementi in modo errato
Prova così:

program fibonacci;
var i,n,tmp,secondo,primo:integer;
begin
writeln('Inserisci un numero');
readln(n);
primo:=0;
secondo:=1;
for i:=1 to n do
begin
tmp:=primo;
primo:=secondo;
secondo:=tmp+primo;
end;
writeln(secondo);
readln
end.

Scoperchiatore
08-01-2004, 18:49
Originariamente inviato da xxx Alcatraz xxx
Regà per favore, se domani non porto sto minchione di Fiboncci so **zzi amari mia! :(
Per favoree, help meeee.

PS
Sto cominciando a sclerare:nera:

PPS
La funzione ricorsiva non mi servirebbe a nulla dato che non abbiamo ancora fatto le funzioni :(

si, ma questo algoritmo nasce per essere ricorsivo :cool:

xxx Alcatraz xxx
08-01-2004, 19:07
Sia lodato ingpeo!:)
Grazie ad ingpeo ed un po a tutti voi, dopo numerose prove è venuto fuori eccolo!:

program fibonacci;
var i,n,tmp,secondo,primo,somma:integer;
begin
writeln('Inserisci un numero');
readln(n);
primo:=-1;
secondo:=1;
for i:=1 to n do
begin
tmp:=primo;
primo:=secondo;
secondo:=tmp+primo;
somma:=somma+secondo;
end;
writeln(somma);
readln
end.



ciao e grazie!

abxide
08-01-2004, 19:10
Originariamente inviato da Scoperchiatore
si, ma questo algoritmo nasce per essere ricorsivo :cool:
Se hanno iniziato da poco gli array, dubito che sappiano già utilizzare la ricorsione ;)

ingpeo
08-01-2004, 19:46
Bueno, divertiti con i prossimi programmini ;)

kikino
19-01-2004, 10:09
Originariamente inviato da ENGINE
a cosa serve in pratica la successione di Fibonacci scusa ?

il rapporto per l'indice che tende a infito tra un numero della serie di fibonacci e il precedente è la sezione aurea....1,618 circa se nn ricordo male.....a cosa serve la sezione aurea? in fottio di opere d'arte stanno in rettangoli i cui lati sono nel rapporto 1:1,618....le spirali di crescita dei semi di girasole nonchè delle pigne nonchè delle ananas sono governate da quel numerino lì......e poi anche il tasso di crescita di popolazione dei conigli(e qui parlo x esperienza :) è governato dalla sezione aurea.......ecco a cosa serve la serie di Fibonacci

giapal
19-01-2004, 10:28
Originariamente inviato da Scoperchiatore
si, ma questo algoritmo nasce per essere ricorsivo :cool:

Bisogna stare attenti però, perché la versione ricorsiva dell'algoritmo (per esempio quella che sta nella pagina indicata da Xfree) è buona solo in teoria, ma non nella pratica, infatti ha complessità esponenziale.

Ciao

kikino
23-01-2004, 17:20
Originariamente inviato da giapal
Bisogna stare attenti però, perché la versione ricorsiva dell'algoritmo (per esempio quella che sta nella pagina indicata da Xfree) è buona solo in teoria, ma non nella pratica, infatti ha complessità esponenziale.

Ciao
Complessità?????
Ma la serie di fibonacci nn coinvolge solo elementi reali????????
hahhahahahha
Scherzo raga

Ho ancora un minimo di barlume di cosa sia la complessita (ma proprio minimo)

Scherzi a parte qualkuno mi da una mano col fortran e le funzioni?
il mio scopo è risolvere un ode non lineare di secondo ordine ma vorrei scrivere le funzioni x il calcolo dei quattro termini solo una volta come funzioni......ovviamente nn voglio usare librerie o altre amenità deve essere nudo e crudo

Thank a Lot