Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ieri sera ho provato a fare For n=livelli to 1 step -1 Invece di For n=1 to livelli. Sembra che i valori siamo più precisi, i risultati li controllo con un foglio di calcolo. Però non capisco il motivo, non dovrebbe essere uguale? Grazie
Se al suo interno D e pl sono costanti allora solo n e' variabile e la faccenda e' semplicissima. Se anche D e pl possono variare la questione e' un pelino piu' articolata ma sono sempre "quattro" righe di codice.
In ogni caso il ciclo in un senso o nell'altro non ha alcuna importanza
Ultima modifica effettuata da nessuno il 18/08/2021 alle 9:55
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
Quindi, se ho capito, tu calcoleresti il range del KL( usando i limiti di VL), in un ciclo for trovare il valore di n che mi dia un KL nel range, usare il KL trovato per calcolare il valore esatto di VL. Corretto? Grazie
Riguardo alla direzione del For , considerando che sono varie le combinazioni di valori che soddisfano il confronto,
con n=1 to livelli si troverà il valore di n minore ,VL minore e KL maggiore,
con n=livelli to 1 si troverà il valore di n maggiore , VL maggiore e KL minore.
Comunque non ha importanza ai fini del risultato.
Spero di aver interpretato bene i consigli
Codice sorgente - presumibilmente C# / VB.NET
KLmin = Math.Round(6000 / (3 / 0.004233), 3) 'calcolo il KL per VL minimo
KLmax = Math.Round(6000 / (10 / 0.004233), 3) 'calcolo il KL per VL massimo
For n = 1 To livelli 'ciclo i livelli
KL = Math.Round((G / (DP * d * ((pl * n) / 1000))), 2) 'calcolo KL in base alvalore di n
If KL > KLmax And KL < KLmin Then 'se KL è compreso tra KLmax e KLmin
VL = Math.Round(0.004233 * (6000 / KL), 1) 'calcolo il valore esatto di VL
Label5.Text = n
Label3.Text = KL
Label4.Text = VL
Exit For
End If
Next
Per quanto riguarda i risultati sono esatti come nel foglio di calcolo, se cambio il valore di G e premo il button , riesegue tutti i calcoli, ottimo , grazie .
Nel caso possibile che non esista un valore di VL valido ,che non rimane nel range , come faccio a segnalarlo?
I valori di KL ed n li devo passare ad un'altra parte del programma , ma una volta finito il ciclo For , avrò ugualmente dei valori nelle variabili , e questo andrebbe a creare dei problemi . Come posso risolvere ?
Grazie
Ultima modifica effettuata da bernie il 18/08/2021 alle 22:08
Ho risolto così, Ho impostato VL=0 prima del ciclo for. Finito il ciclo for controllo se VL è diverso da zero, nel qual caso passo i valori di KL ed n . Non è elegante ma sembra funzionare. Grazie a tutti per la collaborazione e pazienza.