|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 2518
|
[Algoritmico-Java] Prendere una percentuale di punti di una rotta
Salve,
ho il classico problema algoritmico che mi sta facendo impazzire, però questa volta è molto semplice da spiegare: Ho una rotta composta da una lista contenente un certo numero di punti, io voglio prendere solo una certa percentuale della rotta, come posso fare? Ovviamente se ho la rotta rappresentata dalla seguente lista di punti 1,2,3,4,5,6,7,8,9,10 e voglio prenderne il 30% voglio grossomodo che mi restituisca qualcosa del tipo: 1,5,10 Ovvero voglio che i punti li prenda in maniera uniforme nella mia lista e non che vengano presi tutti uno dopo l'altro. Come posso fare considerato che le uniche informazioni che io avrò saranno la lista, quindi il numero totale dei punti contenuti e la percentuale di punti che voglio prendere? Io stavo pensando a qualcosa del tipo se i è la posizione del punto nella lista allora se i % qualcosa == 0 allora prendilo/non prenderlo. Non riesco però bene a formulare questa condizione. Avete qualche suggerimento? Vi ringrazio in anticipo per l'aiuto, guylmaster |
|
|
|
|
|
#2 |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 22056
|
così su due piedi direi indice % ( 1/(percentuale/100))==0 controlla se ti và bene
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 2518
|
Quote:
Codice:
float modulo = (((float)rotta.size()) / 100) * percentuale; modulo = ((float)rotta.size()) / modulo; int salta = 0; Poi nel for che scandisce la rotta (usando come indice l'intero i) metto questo: Codice:
if(salta < modulo && i > 0)
{
//Lo salto, ovvero aggiungo alla linea % che è il mio carattere di commento
linee.add(0,"% "+linea);
salta++;
}
else
{
//Lo prendo
linee.add(0,linea);
salta = 0;
}
Il mio con il 10% ne prende 1 si e 10 no, il tuo con il 10% ne prende 1 si e 9 no su una rotta di 915 nodi. Ora il 10% è prenderne 1 si e 9 no come fa il tuo o è giusto il mio? mi sto confondendo. EDIT: se ho 915 punti prenderne il 10% significa prenderne 91,5, il mio che ne prende 1 si e 10 no non significa prenderne 1/10 ? quindi proprio 91 (vabbè il .5 non può pregne mezzo) mentre ad occhio e croce il tuo ne prenderebbe il 9% o mi sto confondendo? Ultima modifica di guylmaster : 30-03-2012 alle 18:19. |
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4423
|
...dalla percentuale ti calcoli lo step (valore intero)...cicli e quando la divisione intera con lo step non restituisce resto rispetto al counter del ciclo preni il valore...
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:19.




















