Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Retrouver une valeur approchée dans une liste
Kharabin Hors ligne Membre Points: 7 Défis: 0 Message

Retrouver une valeur approchée dans une liste

Posté le 26/01/2019 12:22

Bonjour,
pour un projet j'ai besoin de retrouver la valeur associée la plus proche a une donnée dans une grande liste, pouvez-vous m'aider?

Merci

(graph 95)



Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 26/01/2019 13:04 | #


Eh bien tu peut commencer par regarder comment faire pour lire une liste valeur par valeur puis tu peux définir une limite de valeur approchée (1<x>5 par ex) et ainsi tu pourra trouver une valeur approchée d'une valeur donnée dans une liste.

Si ta question est plus technique (programmation) tu peut poser tes questions sans soucis
Lephenixnoir En ligne Administrateur Points: 24678 Défis: 170 Message

Citer : Posté le 26/01/2019 15:17 | #


Salut, il y a plein de façons de faire ça mais la plus facile est certainement comme ceci.

D'abord, il te faut la donnée en question, je l'appelle X. Ensuite tu vas parcourir la liste, et à chaque instant tu dois savoir quel est l'élément de le plus proche de X parmi ceux que tu as vus. Si tu arrives à garder l'oeil dessus, quand tu arriveras à la fin de la liste, tu auras trouvé !

Notons la meilleure valeur B (pour best). Il faut bien commencer quelque part, donc on va mettre la première valeur de la liste, disons la liste 1.

List 1[1]→B

Ensuite, on va regarder toutes les autres, et il faut que B reste la valeur la plus proche. Donc, chaque fois qu'on regarde une nouvelle valeur V, on va tester si elle est plus proche de X que B :

* Si elle n'est pas plus proche, alors B est toujours la meilleure : il n'y a rien à faire.
* Si elle est plus proche, alors on remplace B par V.

Regardons donc toutes les valeurs à partir de la seconde :

For 2→I To Dim List 1
  List 1[I]→V

Pour tester la distance entre deux valeurs y et z, la formule est Abs (y-z). On compare donc comme annoncé :

  If Abs (V-X)<Abs (B-X)
  Then V→B
  IfEnd

Ensuite on termine la boucle et on affiche le plus proche.

Next
"Valeur proche":B◢

Voici le code complet, une fois la condition réécrite sous la forme courte.

List 1[1]→B
For 2→I To Dim List 1
  List 1[I]→V
  Abs (V-X)<Abs (B-X)⇒V→B
Next
"Valeur proche":B◢

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kharabin Hors ligne Membre Points: 7 Défis: 0 Message

Citer : Posté le 27/01/2019 01:18 | #


Vraiment génial merci!
je m'y met de ce pas
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 27/01/2019 09:40 | #


Ah ben j'étais pas loin alors
Kharabin Hors ligne Membre Points: 7 Défis: 0 Message

Citer : Posté le 27/01/2019 12:07 | #


C'était ma première fois avec les listes, c'était bien.

J'ai deux listes pour une table de risques pour des tests statistiques, l'une le risque l'autre la proba associé. en entrant un risque voulu mon code parcours la première liste, trouve le rang de la valeur la plus proche et trouve la valeur de ce rang dans la deuxième liste.
Je vais utiliser les listes avec abus.
Lephenixnoir En ligne Administrateur Points: 24678 Défis: 170 Message

Citer : Posté le 27/01/2019 12:33 | #


Je vais utiliser les listes avec abus.

Voilà, c'est ça l'esprit !

N'hésite pas à abuser également de matrices et de chaînes de caractères !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 139 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd