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 -
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
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:
- Rechercher intervalle pour une valeur
- Rechercher ou saisir une url - Guide
- Rechercher une chanson - Guide
- Rechercher une image - Guide
- Rechercher remplacer word - Guide
- Rechercher ou entrer l'adresse - Guide
2 réponses
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...
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...