
Carlo (Member)
Guru^2
    
Messaggi: 1423
Iscritto: 29/01/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 |
' per esempio se i dati inseriti sono: Dim N1 as short = 60 ' dividendo Dim N2 as Short = 7 ' divisore If N2 > N1 Then ' se il divisore è + grande del dividendo N2 = N1 ' per se stesso è divisibile ElseIf N1 Mod N2 = 0 Then ' non da resto, per cui va bene Debug. Print(N2 ) ' il valore iserito resta invariato Else Do Until N1 Mod N2 = 0 ' cerco il primo divisore che non da resto N2 += 1 Loop End If ' 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 |
|

()
Newbie
    
Messaggi:
Iscritto:
|
Non c'è un modo matematico. Ma a cosa ti serve una cosa del genere?
|
|

Carlo (Member)
Guru^2
    
Messaggi: 1423
Iscritto: 29/01/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 |
|

Mikelius (Member)
Expert
    
Messaggi: 525
Iscritto: 14/04/2017
|
Qualche delucidazione:
Gli input sono esclusivamente degli interi?
se si, che range hanno?
|
|

Carlo (Member)
Guru^2
    
Messaggi: 1423
Iscritto: 29/01/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 |
|

Mikelius (Member)
Expert
    
Messaggi: 525
Iscritto: 14/04/2017
|
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).
|
|

Carlo (Member)
Guru^2
    
Messaggi: 1423
Iscritto: 29/01/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 |
|

Mikelius (Member)
Expert
    
Messaggi: 525
Iscritto: 14/04/2017
|
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) |
|

Carlo (Member)
Guru^2
    
Messaggi: 1423
Iscritto: 29/01/2018
|
Postato originariamente da Mikelius:
Per quotare, in basso a destra sopra il tasto rispondi c'è il tasto quote |
Ok. grazie funziona
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 |
|