PDA

View Full Version : Mi aiutate a fare questo progetto in VB


bas1800
22-03-2006, 18:24
creare un progetto vb che fa introdurre all'utente in un textbox un numero intero positivo nn piu grande di 30 (n) e visualizzi in una label i primi "n" termini della successione di sibonacci

devo farlo in vb ma nn so da dove iniziare chi vuole darmi una mano ?'

grazie mille
accetto consigli

mynos79
22-03-2006, 18:52
Usi vb6 o .net?
Comunque è uguale a livello di codice ...

Questo lo metti dentro all' evento del pulsante o dove vuoi
Dim i, n As Integer
n = val(textbox1.text) ' o puoi usare cint() o quello che ti serve
For i = 0 To n
Label1.Text = Label1.Text & fibonacci(i) & " - "
Next i

Questa è la funzione che calcola il numero x della serie di fibonacci (ho usato un metodo ricorsivo, si poteva implementare in tanti altri modi
Function fibonacci(ByVal x As Integer) As Integer
If x = 0 Or x = 1 Then
fibonacci = 1
Else
fibonacci = fibonacci(x - 1) + fibonacci(x - 2)
End If
End Function

Ziosilvio
22-03-2006, 19:09
Usi vb6 o .net?
Comunque è uguale a livello di codice ...
[CUT]
Aiutare le persone non vuol dire fargli i compiti per casa.

mynos79
22-03-2006, 19:40
Ehmmm :mbe:
E' vero, mi spiace ... ma ho fatto la prova direttamente in vb e poi ho fatto copia incolla e ho perso la domanda iniziale ... :rolleyes:

Che dire ... è tutto sbagliato quello che ho fatto!!!! :p devi rifarlo :D

Traxsung
22-03-2006, 21:07
si, ha ragione Ziosilvio, avresti dovuto dare dalle indicazione per farlo andare con i suoi piedi. Cmq di sicuro te l'hai fatto soltanto per aiutarlo

bas1800
23-03-2006, 06:13
Usi vb6 o .net?
Comunque è uguale a livello di codice ...

Questo lo metti dentro all' evento del pulsante o dove vuoi
Dim i, n As Integer
n = val(textbox1.text) ' o puoi usare cint() o quello che ti serve
For i = 0 To n
Label1.Text = Label1.Text & fibonacci(i) & " - "
Next i

Questa è la funzione che calcola il numero x della serie di fibonacci (ho usato un metodo ricorsivo, si poteva implementare in tanti altri modi
Function fibonacci(ByVal x As Integer) As Integer
If x = 0 Or x = 1 Then
fibonacci = 1
Else
fibonacci = fibonacci(x - 1) + fibonacci(x - 2)
End If
End Function
pero' io la funzione di sibonacci nn la conosco e non credo devo usarla
uso vb 6

mynos79
23-03-2006, 08:11
La funzione fibonacci() non esiste in vb, l' ho scritta io (come ad esempio puoi inventartene una tu).

Sai che la serie di fibonacci segue queste regole:
- F(0) = 1
- F(1) = 1
- F(n) = F(n-1) + F(n-2)

Infatti ricavi: 1 1 2 3 5 8 13 21 34 55 .....

Semplicemente ho creato una funzione che riceve un parametro di tipo integer (ovvero l' ennesimo numero della serie da calcolrare); poi controllo che il parametro sia =0, =1 oppure diverso ... se =0 o =1 restituisco 1 (prime 2 regole della serie) altrimenti restituisco la somma delle 2 funzioni fibonacci() (metodo ricorsivo in quanto richiamo da dentro una funzione la funzione stessa) passandogli come parametri n-1 e n-2 (come da 3° regola della serie).

Il metodo ricorsivo è usato spesso, come ad esempio nel calcolo del fattoriale.

bas1800
23-03-2006, 08:41
La funzione fibonacci() non esiste in vb, l' ho scritta io (come ad esempio puoi inventartene una tu).

Sai che la serie di fibonacci segue queste regole:
- F(0) = 1
- F(1) = 1
- F(n) = F(n-1) + F(n-2)

Infatti ricavi: 1 1 2 3 5 8 13 21 34 55 .....

Semplicemente ho creato una funzione che riceve un parametro di tipo integer (ovvero l' ennesimo numero della serie da calcolrare); poi controllo che il parametro sia =0, =1 oppure diverso ... se =0 o =1 restituisco 1 (prime 2 regole della serie) altrimenti restituisco la somma delle 2 funzioni fibonacci() (metodo ricorsivo in quanto richiamo da dentro una funzione la funzione stessa) passandogli come parametri n-1 e n-2 (come da 3° regola della serie).

Il metodo ricorsivo è usato spesso, come ad esempio nel calcolo del fattoriale.
ora provo a incrementarlo grazie mille

bas1800
23-03-2006, 08:56
mi a errore di compilazione : prevista matrice

mynos79
23-03-2006, 09:38
Funziona bene ... attento a fare copia incolla (la funzione è completa, ma la prima parte del codice era solo uno spunto, devi inserirlo nell' evento del pulsante ed inserire nel form il pulsante, la label e la textbox ...).

Ziosilvio
23-03-2006, 11:28
Mi permetto di suggerire un paio di migliorie.

La prima: adoperare un'implementazione iterativa della successione di Fibonacci al posto di una ricorsiva, in modo da risparmiare un bel po' di chiamate di funzioni.
E' sufficiente adoperare due variabili intere.

La seconda: invece di chiamare n volte una funzione che restituisce l'i-esimo numero di Fibonacci, chiamare una volta sola una funzione che calcola i primi n numeri di Fibonacci aggiungendoli man mano a una stringa inizialmente vuota.
Sarebbe un bell'esercizio di manipolazione di stringhe e conversione di tipi.

fuocofatuo
23-03-2006, 14:18
In effetti questo è il classico problema che si risolve felicemente col paradigma della programmazione dinamica. Il metodo ricorsivo proposto prima porta ad una complessità assurda per un problema così semplice.