Ciclo Do while



  • Ciclo Do while
    di mauro (utente non iscritto) data: 10/04/2013 17:30:49

    Ciao ragazzi, sono appasionato di vba e sto studiando da autodidatta, ma quando incontro queste difficoltà non so cosa fare. Per favore potresti aiutarmi a risolvere questo problema in maniera semplice: realizzare un programma che generi e scriva sul foglio Excel sulla prima colonna, la serie di numeri: 2, 5, 10, 17, 26, …, ricavati con la seguente formula an = n² +1 fino a che il termine calcolato raggiunge il valore 1000
    Ho impostato il codice dove sbaglio?
     
    Sub scrivi()
    Dim i As Integer, b As Integer, n As Integer
    i = 0
    Do While i <= 1000
    b = n ^ 2 + 1
    'i viene incrementato ogni volta di 1
    i = i + 1
    Loop
    Cells(1, 1) = b
    End Sub
    



  • di HarryBosch data: 10/04/2013 19:49:50

    Ciao Mauro
    ti faccio notare le due variabili:
    - la "n" viene elevata alla potenza, ma ad ogni passaggio del ciclo non aumenta mai in quanto non viene mai incrementata
    - esegui il ciclo finchè la "i" raggiunge i 1000, ma in realtà nel tuo testo il controllo dovrebbe essere un altro: "fino a che il termine calcolato raggiunge il valore 1000",
    che corrisponde alla variabile "b"

    Inoltre riporti il risultato solo al termine del ciclo (invece devi scriverlo ad ogni passaggio) e sempre nella stessa cella: Cells(1,1) ; anche quest'utlima andrà incrementata assieme all'indice.

    Vedi la modifica sotto.

    Inoltre, il valore b è opportuno indicizzarlo come "Long", in quanto con le potenza si fa presto a superare il limite previsto dal tipo Integer.
     
    Sub scrivi()
        Dim i As Integer, b As Long
        
        Do While b <= 1000
            i = i + 1
            b = i ^ 2 + 1
            Cells(i, 1) = b
        Loop
        
    End Sub
    



  • di Vecchio Frac data: 10/04/2013 20:56:24

    cit: "la serie di numeri: 2, 5, 10, 17, 26, …, ricavati con la seguente formula an = n² +1 "
    ---> Io non ho vocazione matematica, e non avevo capito come generare la successione indicata con la funzione così come dichiarata, prima dell'intervento di Harry :)






  • Ciclo Do while
    di mauro (utente non iscritto) data: 11/04/2013 10:11:26

    Grazie ragazzi del forum, siete stati bravissimi e chiari nella spiegazione. Il problema è stato risolto.

    Saluti a tutti da mauro