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

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


Messaggi: 164
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: 1344
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: 164
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: 6402
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: 164
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: 6402
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: 164
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: 6402
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: 164
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