bernie (Normal User)
Pro
Messaggi: 164
Iscritto: 23/10/2019
|
Buona sera
non so se il titolo della discussione è corretto.
Codice sorgente - presumibilmente VB.NET |
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button15.Click Dim Valore As Long = 0 Dim KL As Long = 0 Dim G As Long = 0 Dim n As Byte = 0 G = TextBox1.Text While Valore <= 9 For n = 1 To 7 KL = (Math.Truncate((G / (200 * ((40 * n) / 1000))) * 100)) / 100 Valore = (Math.Truncate(0.004233 * (6000 / KL) * 10)) / 10 If n > 7 Then MsgBox("n fuori range ") Exit While End If If Valore > 12 Then MsgBox("valore fuori range") Exit While End If Next End While Label22.Text = n End Sub
|
Inserisco un valore nella textbox, premo il pulsante e l'etichetta mi mostra il risultato del calcolo.
Se per qualche ragione il risultato è fuori dal range stabilito mi segnala la cosa .
Fino qui tutto ok , però , se voglio cambiare il valore della textbox e rifare un calcolo , il risultato non cambia .
Dove sbaglio ?
|
|
Carlo (Member)
Guru
Messaggi: 1344
Iscritto: 29/01/2018
|
leggendo senza provare vedo:
If n > 7 Then
MsgBox("n fuori range ")
Exit While
End If
perché n dovrebbe diventare > 7 se viene incrementatao dal for e sappiamo che va da 1 a 7?
Dove lo mostri il risultato: Label22.Text = n? (se non si esce prematuramente dal for e dal wile con un fuori range, sarà sempre 8)
Quali sono i valori impostabili e quali dovrebbero essere i risultati?
Se il numero inserito in TextBox1.Text produce per tutti i valori di n, 1...7 un Valore sempre <= 9 si resterà nel loop per sempre...
in programmazione tutto è permesso |
|
bernie (Normal User)
Pro
Messaggi: 164
Iscritto: 23/10/2019
|
Pensando di semplificare le cose le ho solo complicate
Codice sorgente - presumibilmente VB.NET |
Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click Label22.Text = "" Label23.Text = "" Label24.Text = "" Dim DP As Long = 200.8 'costante Dim G As Long G = TextBox1.Text ' questo è il prametro che va impoastao , un valore che può essere tra 1 e 500 Dim d As Long = 1 ' questo valore è una costante , può essere cambiato ma difficilmente Dim LS As Long = 3 ' questo valore è quasi una costante , può essere cambiato, in un range da 0 a 10 Dim HS As Long = 10 ' questo valore è quasi una costante , può essere cambiato, in un range da LS a 10 Dim VL As Long ' valore che si vuole trovare Dim KL As Long ' valore che si vuole trovare Dim pl As Long ' questo valore può essere 6-12-40 decisione impostabile Dim livelli As Long ' questo valore può avere due valori , 7 oppure 4 è legato a pl , se pl=40 livelli=4 altrimenti livelli=7 Dim n As Long ' valore che si vuole trovare If ListBox1.Text = 40 Then livelli = 4 pl = 40 ElseIf ListBox1.Text = 12 Then livelli = 7 pl = 12 Else livelli = 7 pl = 6 End If For n = 1 To livelli KL = (Math.Truncate((G / (DP * d * ((pl * n) / 1000))) * 100)) / 100 VL = (Math.Truncate(0.004233 * (6000 / KL) * 100)) / 100 If n < livelli And (VL > LS And VL < HS) Then Label22.Text = n Label23.Text = KL Label24.Text = VL Exit For End If Next End Sub
|
Il valore che si imposta è G , devo trovare tre valori , n, VL,KL.
VL deve essere nel range di LS e HS .
KL non ha limitazioni
n deve essere un numero intero compreso tra 1 e 4 oppure tra 1 e 7 a secondo di cosa si sceglie nella listbox.
Le formule per trovare KL ed VL sono corrette .
Quello che ho cercato di fare è incrementare la n fino a quanto il valore di KL non mi consente di avere un VL maggiore di LS e minore di HS quel punto esco dal ciclo .
Continua a darmi valori di n maggiori del dovuto
Ultima modifica effettuata da bernie il 16/08/2021 alle 22:26 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Così si capisce poco, partiamo dal problema e non dal codice.
Esiste una formula su cui ragionare, tipo
x=y*w/k ...
?
Magari ci dai la formula, ci fai un esempio numerico concreto e ci dici cosa vuoi trovare a partire da quali dati.
E' inutile inserirsi nel ragionamento del tuo codice che è magari completamente sbagliato.
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à. |
|
bernie (Normal User)
Pro
Messaggi: 164
Iscritto: 23/10/2019
|
Ok nessuno KL=G/(D*(pl*n)*1000)) VL=0.004233*(6000/KL) G=180 pl=40 D=201 VL deve essere compreso tra 3 e 10 n varia da 1 a 4 Scusate se non sono stato chiaro. Grazie.
Ultima modifica effettuata da bernie il 17/08/2021 alle 10:09 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Andiamo per passi ...
Se VL deve essere compreso tra 3 e 10 allora KL deve essere compreso tra
2.5398 e 8.46596
Il valore di n è un intero da 1 a 4? O può essere anche non intero?
E comunque, tu quale elemento dell'espressione vuoi trovare dai tuoi calcoli dato che
(2.5398 ... 8.46596) = G/(D*(pl* (1...4))*1000))
??
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à. |
|
bernie (Normal User)
Pro
Messaggi: 164
Iscritto: 23/10/2019
|
n può essere solo un intero. 1-2-3-4 Io ho G, devo trovare KL, VL ed n.
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
bernie ci dobbiamo capire ...
Tu conosci G e conosci anche VL perché hai dato dei limiti.
Quindi ti chiedo in questa formula
(2.5398 ... 8.46596) = 180/(D*(pl* (1...4))*1000))
quello che non conosci è D e pl ... sono questi che vuoi conoscere?
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à. |
|
bernie (Normal User)
Pro
Messaggi: 164
Iscritto: 23/10/2019
|
G è il parametro che imposto. VL so i limiti, ma io devo trovare un valore dentro i limiti. D lo conosco. pl lo conosco n so che valori può assumere, ma devo trovare quello giusto. Quindi devo trovare i valori di VL, KL ed n per avere il valore di G impostato. Scusa se mi spiego male. Purtroppo nella mia testa è tutto chiarissimo...
|
|