blueblasterz Posté(e) le 5 décembre 2016 Posté(e) le 5 décembre 2016 Bonjour ! Le titre résume très bien l'affaire, je ne sais pas si c'est très utile, mais sait-on jamais, peut-être dans un skript complexe... ? Tout est expliqué dans le code, le voici en spoiler avec un exemple pour ceux ayant la flemme de télécharger ^^: # Fonction Skript pour résoudre des équations à une inconnue du premier degré # par blueblasterz # nécéssite les addons : # - SkQuery, pour le fait que ce soit une fonction # - options: msgResultat : x = # le message avant le résultat de l'équation function solv(e: text) :: text: broadcast "" if {_e} does not contain "=" and "x": # on vérifie que la forme est là (ne capte pas toutes les incohérences : par ex "4x-2=" est accepté, mais renvoie une erreur) return "&4ERREUR : l'équation doit être de la forme ax+b=c" # modifiable set {_eq::*} to {_e} split by "=" # broadcast "%{_eq::1}% = %{_eq::2}%" if {_eq::1} contains "+": # Si il y a au moins un "+" dans le premier membre de l'équation, set {_verif} to first index of "+" in {_eq::1} # on regarde la place du premier "+" if {_verif} is smaller than 2: # c'est à dire si c'est le premier charactère (on vérifie au cas où) # broadcast "+ en première place !" # débug set {_temp::*} to {_eq::1} split by "" # on split completement le message set {_temp2} to "" # éviter un <none> 4 lignes plus bas set {_temp3} to 1 # compteur loop size of {_temp::*}-1 times: # on loop une fois de moins que le nombre de charactère du premier message set {_temp3} to {_temp3}+1 # compteur set {_temp2} to "%{_temp2}%%{_temp::%{_temp3}%}%" # ainsi le premier charactère est éliminé (c'était un "+" inutile qui ferai bugger plus tard) set {_eq::1} to {_temp2} if {_eq::1} contains "+": # vérif obligatoire, savoir si b est positif ou négatif set {_Ma::*} to {_eq::1} split by "+" # pour séparer ax et b if size of {_Ma::*} is greater than 2: # si le premier charactère est "+" ou "-", on aurai 3 "cases". Cette vérification est faites pour chaques cas, meme si dans certains elle est inutile set {_Ma::1} to "%{_Ma::1}%%{_Ma::2}%" # la première "case" est égales aux anciennes 2 premières set {_Ma::2} to {_Ma::3} #et la 2eme est égale à la troisieme set {_Ma::2} to "+%{_Ma::2}%" #sinon risque de bug au moment du calcul (pas de différence entre positif et négatif) # broadcast "ax = %{_Ma::1}% ; b = %{_Ma::2}%" else: # eq::1 contains "-" set {_Ma::*} to {_eq::1} split by "-" # exactement le même principe que plus haut, aucune différence sinon le signe utilisé if size of {_Ma::*} is greater than 2: set {_Ma::1} to "%{_Ma::1}%%{_Ma::2}%" set {_Ma::2} to {_Ma::3} set {_Ma::2} to "-%{_Ma::2}%" else: set {_Ma::*} to {_eq::1} split by "+" if size of {_Ma::*} is greater than 2: set {_Ma::1} to "%{_Ma::1}%%{_Ma::2}%" set {_Ma::2} to {_Ma::3} set {_Ma::2} to "+%{_Ma::2}%" # broadcast "ax = %{_Ma::1}% ; b = %{_Ma::2}%" else: #eq::1 contains "-" set {_verif} to first index of "-" in {_eq::1} if {_verif} is smaller than 2: # broadcast "- en première place !" set {_temp::*} to {_eq::1} split by "" set {_temp2} to "" set {_temp3} to 0 loop size of {_temp::*}-1 times: set {_temp3} to {_temp3}+1 set {_temp2} to "%{_temp2}%%{_temp::%{_temp3}%}%" set {_eq::1} to {_temp2} set {_Ma::*} to {_eq::1} split by "-" if size of {_Ma::*} is greater than 2: set {_Ma::1} to "%{_Ma::1}%%{_Ma::2}%" set {_Ma::2} to {_Ma::3} set {_Ma::1} to "-%{_Ma::1}%" set {_Ma::2} to "-%{_Ma::2}%" # broadcast "ax = %{_Ma::1}% ; b = %{_Ma::2}%" else: set {_Ma::*} to {_eq::1} split by "-" if size of {_Ma::*} is greater than 2: set {_Ma::1} to "%{_Ma::1}%%{_Ma::2}%" set {_Ma::2} to {_Ma::3} set {_Ma::2} to "-%{_Ma::2}%" # broadcast "ax = %{_Ma::1}% ; b = %{_Ma::2}%" set {_temp::*} to {_Ma::1} split by "x" # pour obtenir a tout seul set {_a} to {_temp::1} if {_a} is "" or "-": # dans le cas où a n'est pas écrit ("x" ou "-x") set {_a} to "%{_a}%1" # on conserve l'éventuel "-" et on ajoute 1, pour que a soit bien un nombre set {_b} to {_Ma::2} # plus de lisibilité set {_c} to {_eq::2} # pareil set {_x} to ({_c} parsed as number - {_b} parsed as number)/{_a} parsed as number # résolution de l'équation, maintenant qu'on a séparé tout les chiffres # démonstration de la résolution : # ax + b = c # ax = c - b # x = (c - b)/a # si vous n'avez rien compris à ces lignes, c'est que n'avez pas encore finis le collège, dans ce cas là n'y faites pas attention ^^ # broadcast "" # débug # broadcast "%{_a}%x %{_b}% = %{_c}%" # débug return "{@msgResultat} %{_x}%" # on retourne le résultat sous la forme définie dans les options # exemple d'appel de la fonction command /eq <text>: trigger: set {_msg} to solv("%arg%") message "%{_msg}%" stop EDIT : voici quelques exemples de forme que l'équation peut prendre : 2x + 1 = 5 -5x +6 = -2 -x -4 = 2 x + 1 = 0 Vous envoyez ceci en paramètre de la fonction en faisant : set {variableTexte} to solv("2x+1=5") Et le tour est joué, la {variableTexte} contient la valeur de x selon cette fonction. Par défaut de la forme "x = ...", modifiable dans les options. Il n'y a besoin que de SkQuery, pour le fait que ce soit une fonction. Vous pouvez l'adapter comme vous voulez :) Voilà voilà :D Blueblasterz 2
WilliamEzzz Posté(e) le 7 décembre 2016 Posté(e) le 7 décembre 2016 Merci pour ce Skript :) Par contre, le bleu de ton écriture fait mal aux yeux
iLaZz Posté(e) le 8 décembre 2016 Posté(e) le 8 décembre 2016 Il faut quels ADD-ON car les fonctions chez moi cela n'a jamais marché.
Skripting Posté(e) le 8 décembre 2016 Posté(e) le 8 décembre 2016 Il faut quels ADD-ON car les fonctions chez moi cela n'a jamais marché. Il ne faut pas d'ADD-ONS. Il faut Skript 2.2.
blueblasterz Posté(e) le 9 décembre 2016 Auteur Posté(e) le 9 décembre 2016 Merci pour ce Skript :) Par contre, le bleu de ton écriture fait mal aux yeux Tu trouves ?? Pire que le orange de Snowach ?? ;) Mais c'est un peu ma marque de fabrique, dans les topics dont je suis le créateur j'écris en bleu comme ça on repère bien ^^ Et merci de... tes remerciements :) Il ne faut pas d'ADD-ONS. Il faut Skript 2.2. Il me semble qu'il faut SkQuery pour faire des fonctions du type de ce que j'ai fais, non ?
Skripting Posté(e) le 9 décembre 2016 Posté(e) le 9 décembre 2016 Tu trouves ?? Pire que le orange de Snowach ?? ;) Mais c'est un peu ma marque de fabrique, dans les topics dont je suis le créateur j'écris en bleu comme ça on repère bien ^^ Et merci de... tes remerciements :) Il me semble qu'il faut SkQuery pour faire des fonctions du type de ce que j'ai fais, non ? Non pas besoin de SkQuery. Beaucoup de personnes pensent que c'est SkQuery qui gère les fonctions mais non. C'est Skript 2.2 1
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant