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 - Algoritmo più matematico.
Forum - C# / VB.NET - Algoritmo più matematico.

Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 19:11
Mercoledì, 07/03/2018
Algoritmo più matematico.

VB.Net

Ho due campi numerici di input che possono essere riempiti da un utente:

N1 e N2, per l'uso da codice ho bisogno che N1/N2 dia resto zero (quoto)
Non posso chiedere all'utente inserisci i numeri in modo che siano divisibili.

Ho inserito un algoritmo che corregge l'input di N2 cercando il valore maggiore più vicino a quello inserito dall'utente ma divisibile.

Il riassunto del codice è:

Codice sorgente - presumibilmente VB.NET

  1. ' per esempio se i dati inseriti sono:
  2.  
  3. Dim N1 as short = 60 ' dividendo
  4. Dim N2 as Short = 7 ' divisore
  5.  
  6.  
  7.    If N2 > N1 Then ' se il divisore è + grande del dividendo
  8.         N2 = N1 ' per se stesso è divisibile
  9.    ElseIf N1 Mod N2 = 0 Then ' non da resto, per cui va bene
  10.         Debug.Print(N2) ' il valore iserito resta invariato
  11.    Else
  12.         Do Until N1 Mod N2 = 0 ' cerco il primo divisore che non da resto
  13.             N2 += 1
  14.         Loop
  15.         Debug.Print(N2)
  16.    End If
  17.  
  18. ' N2 verrà variato da 7 a 10



Il codice funziona, ma non mi piace, e volevo sapere se esiste un metodo "matematico" per ottenere lo stesso risultato.

Ultima modifica effettuata da Carlo il 07/03/2018 alle 19:27


in programmazione tutto è permesso
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:52
Mercoledì, 07/03/2018
Non c'è un modo matematico. Ma a cosa ti serve una cosa del genere?


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
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 20:10
Mercoledì, 07/03/2018
i numeri sono dimensioni e velocità di spostamento di componenti grafiche, che l'utente può scegliere.
Se non sono divisibili tra loro le componeti grafiche non si sposteranno di un numero corretto di pixel, lo stesso algoritmo aggiusta le cose anche dopo un ridimensionamento, con relativo zoom, il codice tratta il contesto grafico in modo relativo.
L'utente può cambiare la velocità, la dimensione degli oggetti, e la dimensione della scena, ma tutto continua a funzionare regolarmente.

Ultima modifica effettuata da Carlo il 07/03/2018 alle 20:13


in programmazione tutto è permesso
PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 0:56
Giovedì, 08/03/2018
Qualche delucidazione:
Gli input sono esclusivamente degli interi?
se si, che range hanno?

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 1:12
Giovedì, 08/03/2018
si, solo interi, parliamo di coordinate in pixel, e la velocità è un incremento di pixel, il range è quello della dimensione del form, anche se al disotto di certi valori tutto diventa così piccolo che anche se il programma ancora funziona, non si riesce più ad usare.


in programmazione tutto è permesso
PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 1:30
Giovedì, 08/03/2018
Lo chiedevo per vedere se era possibile ottimizzare il codice.
Ad esempio, se N2 è =1, inutile stare a cercare il divisore, 1 è il divisore di tutti i numeri.
Stessa cosa per i numeri primi. Se come N1 inserisco un numero primo (ad esempio 4.999.999)
e come N2=2 (non so se poi effettui delle verifiche dell'input per evitare simili casi) il tuo algoritmo potrebbe stare un pochettino a trovarlo...
Quindi forse in alcuni casi converrebbe avere una lista di numeri primi e verificare prima se è tra essi (tu devi farti i conti su cosa conviene).

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 11:28
Giovedì, 08/03/2018
Si, infatti quando è l'utente ad inserire i valori l'efficienza non è influente, visto che il codice viene eseguito solo una volta.
Invece quando si ridimensiona il form i valori cambiano ripetutamente, e una ottimizzazione può migliorare l'aspetto visivo del ridimensionamento.
Grazie dei consigli e delle riflessioni.

Ne approfitto per farti due domade fuori tema, che codice bisogna inserire per far apparire il testo quotato?
Il tasto Home per tornare sulla Home page dov'è?


in programmazione tutto è permesso
PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 12:16
Giovedì, 08/03/2018
Testo quotato

Postato originariamente da Carlo:

Si, infatti quando è l'utente ad inserire i valori l'efficienza non è influente, visto che il codice viene eseguito solo una volta.
Invece quando si ridimensiona il form i valori cambiano ripetutamente, e una ottimizzazione può migliorare l'aspetto visivo del ridimensionamento.
Grazie dei consigli e delle riflessioni.

Ne approfitto per farti due domade fuori tema, che codice bisogna inserire per far apparire il testo quotato?
Il tasto Home per tornare sulla Home page dov'è?



Per quotare, in basso a destra sopra il tasto rispondi c'è il tasto quote, comunque i tag dovrebbero essere

[ quote ] ... [ /quote ] (senza spazi)

Per tornare alla home page, onestamente non so se c'è un tasto...io clicco ogni volta sul logo in alto (è linkato al sito stesso)

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 15:03
Giovedì, 08/03/2018
Testo quotato

Postato originariamente da Mikelius:
Per quotare, in basso a destra sopra il tasto rispondi c'è il tasto quote



Ok. grazie funziona

Testo quotato

Postato originariamente da Mikelius:
Per tornare alla home page, onestamente non so se c'è un tasto...io clicco ogni volta sul logo in alto



Ok, grazie sicuramente più veloce di come facevo io, cancellavo sulla balla degli indirizzi lasciando solo: http://www.pierotofy.it

Ultima modifica effettuata da Carlo il 08/03/2018 alle 15:07


in programmazione tutto è permesso
PM Quote