Rechercher intervalle pour une valeur

Résolu
ZZ2F3 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   -  
ZZ2F3 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je voudrais savoir si vous n'avez pas une facon plus "propre" que moi pour rechercher un intervalle correspondant à une valeur. Je m'explique :

J'obtiens avec des calculs préalables des nombres situés entre 0 et 1 et je voudrais redimensionner ces nombres.

En effet la fonction que je cherche à coder renverrait pour une valeur x la valeur de k tel que x soit dans l'intervalle [k/N;(k+1)/N].

Ainsi : Res = Recherche_k (x, N) ou N est le nombre de division de l'intervalle [0;1].

Par exemple : Recherche_k(0.56, 5) me renverrait k=2 car 2/5=0.4<0.56<3/5=0.6

Ma premiere idée a donc été de tester les valeurs de k une par une mais je voudrais savoir si personne n'aurait de conseils à me donner pour améliorer l'éfficacité d'une telle fonction...

int Recherche_k(x,N)
{
test=0
while (test==0)
{
if ( ((k/N)<x) && (x<(k+1)/N) )
test=1;

else
k=k+1;
}
return k;
}


Merci de votre aide!

Bonne journée
A voir également:

2 réponses

macgawel Messages postés 664 Date d'inscription   Statut Membre Dernière intervention   89
 
Bonjour.

Premier point : pourquoi affecter une valeur nulle à test, alors qu'un booléen suffirait : test = false; while (! test)
(C'est du pinaillage, mais bon...)

Deuxième point :
Essaye de prendre le problème dans le bon sens.
Tu disposes de deux éléments :
- Un nombre x
- Le nombre d'intervalles N

Problème : trouver dans quel intervalle est x.

Ton premier intervalle couvrira la zone [0, 1/N]
Ton deuxième intervalle couvrira la zone [1/N, 2/N]
etc.
=> Pour trouver où est x, il suffit de le diviser par 1/N (et donc de le multiplier par N)...

Essaye la fonction Floor, tu devrais t'en sortir en une ou deux lignes...

Accessoirement : si x = 1/N, où doit-il se trouver ? Dans l'intervalle [0,1/N] ou dans l'intervalle [1/N,2/N] ?
Parce que ta fonction rend une boucle infinie...
1
ZZ2F3 Messages postés 40 Date d'inscription   Statut Membre Dernière intervention  
 
Merci!

J'ai honte de pas avoir pensé a seulement multiplier par N ...

Problème réglé merci beaucoup =)
0