1 pièce(s) jointe(s)
Trouver la valeur "la plus proche de" dans une liste
Bonsoir
Voila mon problème ( encore:mrgreen:)
l'utilisateur rentre une valeur cible ( ici 1/1.5 donc 0.66666666...)
J'ai une liste de valeur double dans laquelle je dois trouver la plus proche de ma cible .
jai voulu procéder ainsi :
>je parcours une partie de la liste ( pas la liste entière ,c'est volontaire).
>trouver valeur directement supérieur a la cible
>trouver la valeur directement inférieur a la cible
>calculer la différence valeur supérieur - cible
>calculer la différence valeur inférieur - cible
>choisir entre les 2 valeurs celle dont la valeur absolue de l'écart avec la cible est la petite.
mais pour le calcul de valeur inférieur il me sort 0 ???
le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| //CALCUL DE AOA :
int k =listeangle.indexOf(anglePMHapro);
if (k!=-1)
index_pmh = k;
valAOAmax= listeLevee1Netmm[0];
valAOAmin= listeLevee1Netmm[0];
double valAOAtmp = 0;
double valAOAtmp2 =0;
for ( int i=0; i<index_max;i++)
{
//valeur superieur a valeur choisie:
if (listeLevee1Netmm[i]>(ValChoixlevee/ValRapportCulbuteur) && listeLevee1Netmm[i]<valAOAmax)
valAOAmax = listeLevee1Netmm[i];
//valeur inferieur a valeur choisie:
if (listeLevee1Netmm[i]<(ValChoixlevee/ValRapportCulbuteur) && listeLevee1Netmm[i]<valAOAmin)
valAOAmin = listeLevee1Netmm[i];
}
//difference valeur sup -valeur choisie:
valAOAtmp = valAOAmax - (ValChoixlevee/ValRapportCulbuteur);
//differnece valeur inf-valeur choisie:
valAOAtmp2 = valAOAmin - (ValChoixlevee/ValRapportCulbuteur);
//choix de la valeur dont la difference absolue (valeur sup/inf-valeur choisie) est la plus petite:
if (abs(valAOAtmp)<abs(valAOAtmp2))
valAOA = valAOAmax;
if (abs(valAOAtmp)>abs(valAOAtmp2))
valAOA = valAOAmin; |
et le resultat: ( valAOAmin =0=
Code:
1 2 3 4 5 6 7 8
| index max = 504
angle levée maxi 354.15
valeur AOAmin = 0
valeur AOAmax = 0.672195
valAOAtmp = 0.00552861
valAOAtmp2 = -0.666667
Valeur de levee AOA = 0.672195
angle AOA = 18 |
pourtant dans la liste jai :
Pièce jointe 562394
merci à vous :D