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 - Autres questions


Index du Forum » Autres questions » Pb. programmation CASIO FX35+ :
Gugusse Hors ligne Membre Points: 73 Défis: 0 Message

Pb. programmation CASIO FX35+ :

Posté le 05/07/2014 22:07

Bonjour,
J'essaye de mettre au point le programme utilisant la méthode des réduites
permettant de trouver une fraction approchée d'une fraction donnée :
Je travaille avec une boucle et je souhaite afficher à chaque "passage" :

RESULTAT "i" :
NUMERATEUR :
valeur
DENOMINATEUR :
valeur


où "i" est une variable qui est incrémentée de "1" à chaque passage.
Bien évidement, il faut que le programme stoppe lorsque l'affichage est
complet pour que l'on puisse prendre note des différents résultats !

Ci joint le programme en pièce jointe.

D'avance merci pour votre aide,
cordialement,
GUGUSSE.

Fichier joint


Gugusse Hors ligne Membre Points: 73 Défis: 0 Message

Citer : Posté le 05/07/2014 23:48 | # | Fichier joint


Bonjour,

J'ai un peu allégé mon programme et j'ai ajouté l'erreur entre la fraction de départ (G/P)
et la fraction obtenue (N/D) après une itération (G/P-N/D).
Le peu de ligne disponible à l'affichage ne me permet pas d'écrire "erreur :" avant l'affichage
de la valeur de l'erreur !

Ci joint le programme modifié.
Comme je ne pouvais pas afficher le N° du résultat, je l'ai supprimé.
Quelqu'un peut-il me dire comment afficher :

RESULTAT "i" :

à chaque itération ?

Cordialement,
GUGUSSE.
Lephenixnoir En ligne Administrateur Points: 24146 Défis: 170 Message

Citer : Posté le 06/07/2014 08:13 | #


Bonjour,

Tu as deux posibilités.
La première est la plus simple, il te suffit de mettre
"Resultat"
I

Mais c'est embêtant car cela implique un retour automatique à la ligne, et permet très peu de gérer la mise en page.

La suivante est plus efficace, elle utilise la commande Locate. Au cas où, la commande Locate se trouve dans le menu I/O ([SHIFT][VARS][F6][F4]) et s'utilise comme suit :
Locate [i]x[/i],[i]y[/i],[i]Texte[/i]

Du coup, tu peux afficher "Resultat i" comme suit :
Locate 1,1,"Resultat"
Locate 10,1,I

Tu peux toujours déplacer les inscription sur l'écran en modifiant les coordonnées, mais garde bien le I 9 caractères plus loin que le "Resultat".
Enfin, x doit être compris entre 1 et 21, et y entre 1 et 7, sinon tu obtiens une erreur Argument à l'exécution.

Cela répond-il à ta question ?
Cordialement,
LePhenixNoir
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Gugusse Hors ligne Membre Points: 73 Défis: 0 Message

Citer : Posté le 07/07/2014 20:50 | # | Fichier joint


Bonjour Phénix,

J'ai essayé les deux solutions et dans les deux cas, j'obtiens le même résultat,
à savoir que "résultat " n'apparaît pas et qu'un "Disp" viens tout perturber !
(voir pièce jointe). Est-ce que cela ne viendrait-il pas du fait que je demande
un arrêt (le triangle noir) ? Y a t-il moyen de faire autrement ?

En tout cas, merci de vous être intéressé à mon problème,
cordialement,
GUGUSSE.
Lephenixnoir En ligne Administrateur Points: 24146 Défis: 170 Message

Citer : Posté le 07/07/2014 21:24 | #


Bonjour,

Une chose est sûre.
Si tu utilises Locate avec un Disp (le triangle noir), cela rendra mal car le "-Disp-" va apparaître sur la première ligne et l'effacer. Mon Locate dans l'exemple ci-dessus l'affichait sur la première ligne, c'est pourquoi tu n'as pas pu le voir. Et le "-Disp-" vient en effet du triangle noir, puisqu'il s'agit de la fonction "Display".

Par conséquent, il est plus pratique d'utiliser la fonction Getkey. Elle aura ici l'avantage de ne rien afficher en plus à l'écran. Voilà comment tu devras l'utiliser :
While Getkey:WhilEnd
While Getkey≠31:WhileEnd

Tu peux trouver cette fonction dans le menu I/O ([SHIFT][VARS][F6][F4]). Son fonctionnement est simple : si aucune touche n'est pressée, elle renvoie 0, sinon elle renvoie une valeur qui désigne la touche.
Ici, nous avons donc deux boucles. La première tourne tant que Getkey renvoie quelque chose de différent de 0, donc tant qu'une touche est pressée. Elle se termine donc lorsqu'aucune touche ne l'est.
La seconde tourne tant que Getkey renvoie une valeur différente de 31. 31 étant le code de la touche [EXE], cette boucle se terminera lorsque cette dernière sera pressée.
Pour résumer, les deux boucles attendent que l'on relâche toutes les touches puis que l'on appuie sur [EXE]. Cela te permet d'obtenir un fonctionnement semblable au Disp, mais rien ne s'affiche à l'écran -- en revanche, tu auras le petit carré noir en haut à droite de l'écran.

Finalement, je te conseille d'utiliser une combinaison de Locate et de Getkey pour obtenir le meilleur résultat. Voilà un code d'exemple :
Locate 2,2,"Resultat"
Locate 11,2,I
While Getkey:WhileEnd
While Getkey≠31:WhilEnd


Je pense que ceci répondra mieux à ton besoin.
Cordialement,
LePhenixNoir
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Gugusse Hors ligne Membre Points: 73 Défis: 0 Message

Citer : Posté le 08/07/2014 16:28 | # | Fichier joint


Bonjour,

Un grand merci pour m'avoir aidé.
J'essaierai à l'avenir de me rappeler cette astuce, mais une seule boucle suffit !
Ci-joint le programme complet pour ceux que cela intéresse : il permet de trouver
des fractions dont la valeur s'approche de plus en plus de la valeur souhaitée au
fur et à mesure que l'on fait des itérations pour s'arrêter quand le programme "tombe"
sur la fraction initiale.
Utile pour trouver un équivalent approché d'une fraction avec un nombre premier en
numérateur et/ou dénominateur.

Bien cordialement,
GUGUSSE
Lephenixnoir En ligne Administrateur Points: 24146 Défis: 170 Message

Citer : Posté le 08/07/2014 16:37 | #


Bonjour,

Gugusse a écrit :
J'essaierai à l'avenir de me rappeler cette astuce, mais une seule boucle suffit !

Pour bien préciser les choses, en effet une seule boucle (la seconde) suffit. Néanmoins, si tu omets la première, alors en restant appuyé sur [EXE], les boucles se termineront immédiatement. Cela pose problème, car si tu affiches plusieurs résultats d'affilée en les séparant par une telle boucle, si le programme s'exécute vite, le temps que tu relâches la touche [EXE], plusieurs résultats auront pu être affichés.
Je ne sais pas si je suis clair... en gros si on reste appuyé sur [EXE] (avec une seule boucle), le programme ne fait plus de pause, alors qu'avec deux boucles on est obligé de relâcher la touche d'abord -- ce qui correspond plus au fonctionnement du Disp.

Par ailleurs, c'est un programme assez utile.
J'en avais utilisé un une fois qui approchait une valeur décimale par une fraction de plus en plus précise.

Si tu as une autre question, n'hésite pas à la poser sur le forum.
Cordialement,
LePhenixNoir
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Gugusse Hors ligne Membre Points: 73 Défis: 0 Message

Citer : Posté le 08/07/2014 22:04 | #


Bonsoir,

et merci pour l'explication. J'ai enfin compris l'utilité de la première boucle !
Sujet clos.

Je ne dis pas à une prochaine fois car j'espère toujours pouvoir m'en sortir seul !
cordialement,
GUGUSSE.

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 104 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