Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Resettare un calcolo
Forum - C# / VB.NET - Resettare un calcolo

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


Messaggi: 107
Iscritto: 23/10/2019

Segnala al moderatore
Postato alle 22:01
Giovedì, 12/08/2021
Buona sera
non so se il titolo della discussione è corretto.
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button15.Click
  2.         Dim Valore As Long = 0
  3.         Dim KL As Long = 0
  4.         Dim G As Long = 0
  5.         Dim n As Byte = 0
  6.         G = TextBox1.Text
  7.         While Valore <= 9
  8.             For n = 1 To 7
  9.                 KL = (Math.Truncate((G / (200 * ((40 * n) / 1000))) * 100)) / 100
  10.  
  11.                 Valore = (Math.Truncate(0.004233 * (6000 / KL) * 10)) / 10
  12.  
  13.                 If n > 7 Then
  14.                     MsgBox("n fuori range ")
  15.                     Exit While
  16.                 End If
  17.  
  18.                 If Valore > 12 Then
  19.                     MsgBox("valore fuori range")
  20.                     Exit While
  21.                 End If
  22.             Next
  23.         End While
  24.         Label22.Text = n
  25.     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 ?

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 972
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 0:03
Venerdì, 13/08/2021
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
PM Quote
Avatar
bernie (Normal User)
Pro


Messaggi: 107
Iscritto: 23/10/2019

Segnala al moderatore
Postato alle 22:07
Lunedì, 16/08/2021
Pensando di semplificare le cose le ho solo complicate
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click
  2.         Label22.Text = ""
  3.         Label23.Text = ""
  4.         Label24.Text = ""
  5.         Dim DP As Long = 200.8      'costante
  6.         Dim G As Long
  7.         G = TextBox1.Text           ' questo è il prametro che va impoastao , un valore che può essere tra 1 e 500
  8.         Dim d As Long = 1           ' questo valore è una costante , può essere cambiato ma difficilmente
  9.         Dim LS As Long = 3          ' questo valore è quasi una costante , può essere cambiato, in un range da 0 a 10
  10.         Dim HS As Long = 10         ' questo valore è quasi una costante , può essere cambiato, in un range da LS a 10
  11.         Dim VL As Long              ' valore che si vuole trovare
  12.         Dim KL As Long              ' valore che si vuole trovare
  13.         Dim pl As Long              ' questo valore può essere 6-12-40 decisione impostabile
  14.         Dim livelli As Long         ' questo valore può avere due valori , 7 oppure 4 è legato a pl , se pl=40 livelli=4 altrimenti livelli=7
  15.         Dim n As Long               ' valore che si vuole trovare
  16.         If ListBox1.Text = 40 Then
  17.             livelli = 4
  18.             pl = 40
  19.         ElseIf ListBox1.Text = 12 Then
  20.             livelli = 7
  21.             pl = 12
  22.         Else
  23.             livelli = 7
  24.             pl = 6
  25.         End If
  26.  
  27.         For n = 1 To livelli
  28.             KL = (Math.Truncate((G / (DP * d * ((pl * n) / 1000))) * 100)) / 100
  29.             VL = (Math.Truncate(0.004233 * (6000 / KL) * 100)) / 100
  30.             If n < livelli And (VL > LS And VL < HS) Then
  31.                 Label22.Text = n
  32.                 Label23.Text = KL
  33.                 Label24.Text = VL
  34.                 Exit For
  35.  
  36.             End If
  37.         Next
  38.     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
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6172
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 8:28
Martedì, 17/08/2021
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à.
PM Quote
Avatar
bernie (Normal User)
Pro


Messaggi: 107
Iscritto: 23/10/2019

Segnala al moderatore
Postato alle 10:01
Martedì, 17/08/2021
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
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6172
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:55
Martedì, 17/08/2021
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à.
PM Quote
Avatar
bernie (Normal User)
Pro


Messaggi: 107
Iscritto: 23/10/2019

Segnala al moderatore
Postato alle 11:36
Martedì, 17/08/2021
n può essere solo un intero. 1-2-3-4
Io ho G, devo trovare KL, VL ed n.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6172
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 11:44
Martedì, 17/08/2021
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à.
PM Quote
Avatar
bernie (Normal User)
Pro


Messaggi: 107
Iscritto: 23/10/2019

Segnala al moderatore
Postato alle 12:23
Martedì, 17/08/2021
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...

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo