pdilauro Inserito: 7 ottobre 2009 Segnala Inserito: 7 ottobre 2009 Buongiorno Forum!!!!!!!!!!!!!!!!Il mio problema consiste:Ho un numero real che può variare tra un limite minimo e massimo esempio +0.0 e +100.0.Ho una serie di quote esempio :0 - 9 = quota110 - 19 = quota220 - 29 = quota330 - 39 = quota440 - 49 = quota550 - 59 = quota660 - 69 = quota770 - 79 = quota880 - 89 = quota990 - 99 = quota10>100 = fuori quotaIo avendo in ingresso il valore +17.5 devo trovare a che quota appartiene.Chiedevo se esiste qualche funzione più semplificata che fare una serie di doppi "compare". Anche perchè le quote potrebbero essere 10 oppure 20, quindi divnterebbe lunga.Grazie anticipatamente.
TravelMen Inserita: 7 ottobre 2009 Segnala Inserita: 7 ottobre 2009 (modificato) Ma così su due piedi, proverei se esiste una relazione tra i valori limite trasformati in bit, e poi faccio solo un confronto a bit, tipo faccio un esempio tipo il 9 in bit è 1001 il 19 è 10011 il 29 è 11101 così potrei creare un confronto a scalare dal bit +significativo sino al bit meno significativo. N.B. ho solo buttato li un'idea non l'ho sviluppata sino in fondo, pertanto non so se sia più complicata o fattibile con le tue quote.Oppure divido il valore per il limite superiore della quota se il risultato è maggiore di 1 continuo finche il risultato è minore di 1, il numero di divisioni è il numero della quota:es. 17.7 / 9 = 1.94 prima divisione quota 1 risultato > 1 continuo17.7 / 19 = 0.92 seconda divisione quota 2 risultato < 1 ok è la mia quota 2A te il controllo se funziona con tutte le quote Modificato: 7 ottobre 2009 da TravelMen
taymyr Inserita: 7 ottobre 2009 Segnala Inserita: 7 ottobre 2009 Mah, secondo me fai sempre prima a fare i compare utilizzando magari un FC parametrizzato.Cioa da Stefano
emanuele.croci Inserita: 16 ottobre 2009 Segnala Inserita: 16 ottobre 2009 Ciao,SE nella tua serie di quote c'è una qualche regola, puoi trovare una formula matematica che faccia il conto.Ad es. nel caso che citi tu sarebbeQuota X = INT((NUMERO +10)/10)SE non c'è una regola fissa, ma le quote sono sempre "una maggiore dell'altra", puoi provare con l'algoritmo "indovina il numero" : supponiamo ad es. che io abbia un array con 512 quote e devo identificare il numero 183.5- provo con la quota 128 => trovo 765.2 => devo scendere- provo con la quota 64 => trovo 70.3 => devo salire- provo con la quota 96...in questo modo ad es. identifico 511 quote in max 9 passaggi (2 ^ 9 -1 =511) Questo riduce il tempo totale di elaborazione... non devo scorrerle tutte.Se non ti interessa il tempo di elaborazione, ti fai un semplice puntatore che viene incrementato di 1 ad ogni ciclo di programma (o con un FOR-NEXT): provi una per una tutte le quote fino a trovare quella giusta...Metodi più semplici purtroppo non credo ce ne siano.Saluti, EmanueleP.S. Sei il Di Lauro che conosco io? Nel caso... CIAO!!
ifachsoftware Inserita: 26 ottobre 2009 Segnala Inserita: 26 ottobre 2009 Prova dare un'occhiata al mio post http://www.plcforum.it/forums/index.php?showtopic=61920 In quell'esempio viene fatta una ricerca binaria tra vari valori e viene ritornato il valore collegato a quello trovato , altrimenti se il valore è in mezzo ai due un valore in proporzione ai due.Potresti modificarla per effettuare una ricerca veloce , ritornando il valore interessatoCiao
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora