Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Resettare un calcolo
Forum - C# / VB.NET - Resettare un calcolo - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
bernie (Normal User)
Pro


Messaggi: 164
Iscritto: 23/10/2019

Segnala al moderatore
Postato alle 9:10
Mercoledì, 18/08/2021
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

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 9:43
Mercoledì, 18/08/2021
La tua disequazioni è

2.5398 <= 180/(D*(n*pl)*1000)) <=
8.46596

con n intero che va da 1 a 4

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à.
PM Quote
Avatar
bernie (Normal User)
Pro


Messaggi: 164
Iscritto: 23/10/2019

Segnala al moderatore
Postato alle 11:13
Mercoledì, 18/08/2021
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

PM Quote
Avatar
bernie (Normal User)
Pro


Messaggi: 164
Iscritto: 23/10/2019

Segnala al moderatore
Postato alle 21:58
Mercoledì, 18/08/2021
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

  1. KLmin = Math.Round(6000 / (3 / 0.004233), 3)                            'calcolo il KL per VL minimo
  2.         KLmax = Math.Round(6000 / (10 / 0.004233), 3)                           'calcolo il KL per VL massimo
  3.         For n = 1 To livelli                                                    'ciclo i livelli
  4.             KL = Math.Round((G / (DP * d * ((pl * n) / 1000))), 2)              'calcolo KL in base alvalore di n
  5.             If KL > KLmax And KL < KLmin Then                                   'se KL è compreso tra KLmax e KLmin
  6.                 VL = Math.Round(0.004233 * (6000 / KL), 1)                      'calcolo il valore esatto di VL
  7.                 Label5.Text = n
  8.                 Label3.Text = KL
  9.                 Label4.Text = VL
  10.                 Exit For
  11.             End If
  12.         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
PM Quote
Avatar
bernie (Normal User)
Pro


Messaggi: 164
Iscritto: 23/10/2019

Segnala al moderatore
Postato alle 19:45
Domenica, 22/08/2021
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.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo