Poster un nouveau sujet Poster une réponse
Problème avec la vérification d'un nombre paire
Auteur Message
Kaetsu
Invité
Posté le : Ven 13 Avr 2012, 21:07   Citer 

Bonsoir,

Je suis en train de faire un programme pour aller plus rapidement en classe et lors des devoirs, son but est de faire les choses suivantes:

- On donne un numérateur sans le PI par exemple 2000
- On donne le dénominateur par exemple: 3
- Il dois diviser l'un par l'autre ce qui donne: 666.6666667
- Il dois prendre la partie entière et prendre le nombre qui multiplier par le dénominateur va donner un nombre paire: 1998
- Ensuite il divise ce nombre par le denominateur: 666
- Il fait une soustraction: 2000-1998
- Il divise 666 par deux: 333
- Et il affiche la formule: 2*333*PI + 2PI/3

Et donc son but est de retrouver la valeur présente autour du cercle trigonometrique a partir d'une valeur qui n'y est pas du tout.

J'ai fais tout mon programme sous le logiciel ALGOBOX, vous pouvez le télécharger ici: http://www.mediafire.com/file/x2ti4bps4fw8bba/TRIGO-VALEUR.alg

Mais lorsque je veut le mettre sur la TI 82-Stats.fr, elle devient complètement folle quand je lui met ceci pour prendre le nombre paire, comme dans mon programme sous le logiciel ALGOBOX.
If C=int(C/2)*2

Elle m'affiche que la valeur pair et entiere la plus proche est 3.

Voici mon programme pour la TI en entier:


Code

:ClrHome
:Disp "NUMERATEUR"
:Disp ""
:Input "N = ",A
:
:ClrHome
:Disp "DENOMINATEUR"
:Disp ""
:Input "D = ",B
:
:If A=0 or B=0
:Then
:ClrHome
:Output(5,4,"IMPOSSIBLE")
:Stop
:End
:
:A/B→C
:If C=int(C/2)*2
:Then
:ClrHome
:C*B→D
:A-D→E
:D/B→F
:F/2→G
:Disp "LE NUMERATEUR EST:"
:Disp ""
:Disp A
:Pause
:Goto 1
:End
:
:Lbl 1
:ClrHome
:Disp "LA VALEUR PAIRE"
:Disp "ET ENTIERE EST:"
:Disp ""
:Disp D
:Pause
:Goto 2
:End
:
:Lbl 2
:ClrHome
:Disp "VOUS OBTENEZ:"
:Disp ""
:Disp D
:Disp B
:Disp "+"
:Disp E
:Disp B
:Pause
:Goto 3
:End
:
:Lbl 3
:ClrHome
:Disp "ON DIVISE:"
:Disp ""
:Disp F
:Pause
:Goto 4
:End
:
:Lbl 4
:ClrHome
:Disp "PUIS PAR 2:"
:Disp ""
:Disp G
:Pause
:Goto 5
:End
:
:Lbl 5
:ClrHome
:Disp "FORMULE:"
:Disp ""
:Disp "2 * "
:Disp G
:Disp "* π + "
:Disp E
:Disp "π / "
:Disp B
:Pause
:Goto 6
:End
:
:Lbl 6
:ClrHome
:Disp "AU FINAL:"
:Disp ""
:Disp E
:Disp "π / "
:Disp B
:Pause
:Goto 7
:End
:
:Lbl 7
:ClrHome
:Disp "TERMINEE"
:Stop
:End



Alors je ne comprend vraiment pas le problème.

Avez vous une solution ? En espérant une réponse rapide.

Merci de votre aide.

Cordialement,
Kaetsu.

  Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3293
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Ven 13 Avr 2012, 22:02   Citer 

Les symboles sont très mal passés sur le forum, c'est peu lisible, pourrai-tu la prochaine fois prendre exemple sur nos programmes pour la symbolique stp?

L'erreur est toute bête: ta condition de vérification est bonne mais si elle est fausse, tu n'as rien mis du coup le programme exécute la suite cad l'affichage de la valeur paire qui n'est donc pas paire.
De plus, c'est un programme de barbare dans l'affichage sur l'écran mais c'est tout à fait normal si c'est tu n'a jamais programmé sur TI.

Par contre je n'ai pas bien compris l'intérêt de ton programme: c'est passé des degrés en radian en simplifiant au maximum par 2 pi?

Sangohan38

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Ven 13 Avr 2012, 22:32   Citer 

Associer des Lbl et des End n'a aucun sens dans une TI.
De plus un des Goto est dans une strucure en If ce qui n'est pas toujours supporté. (voir mon article)

Je ne vois pas en quoi le test pourrais être faux mais on peut tout-de-même le simplifier.

sango : ce programme décompose un angle en somme d'un multiple de 2Pi et de la valeur principale de l'angle.

Voici ce que j'obtiens, je ne l'ai pas testé.
Code
:ClrHome
:Disp "X=A pi /B
:Prompt A,B
:
:If A=0 ou B=0
:Then
:Disp "IMPOSSIBLE
:Stop
:End
:
:A/B -> C
:If not(fPart(C/2  // si le nombre est pair.
:Then
:
:ClrHome
:C*B -> D
:A-D -> E
:D/B -> F
:F/2 -> G
:Disp "LE NUMERATEUR EST:"
:Pause A
:
:Else // sinon (nombre impair)
:
:ClrHome
:Disp "LA VALEUR PAIRE"
:Disp "ET ENTIERE EST:"
:Pause D
:
:Disp "VOUS OBTENEZ:"
:Disp ""
:Disp D
:Disp B
:Disp "+"
:Disp E
:Pause B
:
:ClrHome
:Disp "ON DIVISE:"
:Disp ""
:Pause F
:
:ClrHome
:Disp "PUIS PAR 2:"
:Disp ""
:Pause G
:
:ClrHome
:Disp "FORMULE:"
:Disp ""
:Disp "2 * "
:Disp G
:Disp "* pi + "
:Disp E
:Disp " pi  / "
:Pause B
:
:ClrHome
:Disp "AU FINAL:"
:Disp ""
:Disp E
:Disp "pi / "
:Pause B
:ClrHome
:Disp "TERMINEE"
:
:End // fin du If/Then/Else/End


Ce sujet m'a donné envie d'écrire ça :
Code
Disp "X=A pi /B
Prompt A,B
int(A/B/2 -> Q
A/B-Q2 -> R
Disp "X=(2*K+R)*PI
Disp "K=",Q,"R=",R>Frac


EDIT: ou encore ça puisque sango veut utiliser des degrés :
Code
Disp "X=A°
Prompt A
int(A/720 -> Q
A/B-Q720 -> R
Disp "X=2*K*360+R °
Disp "K=",Q,"R=",R>Frac



----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3293
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Ven 13 Avr 2012, 22:55   Citer 

Alors pourquoi s'embêter et ne pas faire une simple règle de 3?


Code
Radian
Input "ANGLE (DEGRE):",A
A/360->A
ipart(A->B
partdec(A->C
Disp B,"*2*pi+",C >Frac,"*pi



Sangohan38

 Adresse email Haut de page Bas de page 
 
Kaetsu
Invité
Posté le : Dim 15 Avr 2012, 12:08   Citer 

Sa fais la même chose,

Par exemple si je met A=2000 et B=3, la calculatrice me donne:

Valeur entière: 1334 au lieu de 1998

Et quoi que je tape en A et en B c'est toujours 1334, sa ne change jamais, même les valeurs qui suivent (667;333.5 ...)

Je ne comprend pas :o

  Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3293
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Dim 15 Avr 2012, 15:17   Citer 

Avec quel programme? Celui de Linkakro?
Si c'est celui-la, la première chose qui me viens à l'esprit est l'instruction "A/B -> C" que tu aurais oublié.

Sangohan38

 Adresse email Haut de page Bas de page 
 
Kaetsu
Invité
Posté le : Dim 15 Avr 2012, 15:46   Citer 

Oui c'est celui de Linkraro

Et non je n'ai rien oublié car j'ai le cable donc copier coller directement.

Elle est complétement folle la TI :o

  Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Dim 15 Avr 2012, 15:50   Citer 

folle certainement pas, même si elle comprend quelques bugs, elle execute exactement le code programmé par les ingénieurs de TEXAS INSTRUMENTS.

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
Kaetsu
Invité
Posté le : Dim 15 Avr 2012, 16:41   Citer 

Je vois pas pourquoi cela ne marche pas alors :o

  Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Dim 15 Avr 2012, 16:56   Citer 

d'ailleurs, quand tu dis le programme de Linkakro, tu parle duquel?

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 15 Avr 2012, 17:17   Citer 

J'ai écrit trois codes, alors soyez un peu plus précis.
Le premier est une correction, peut-être fausse, du programme original.
Le deuxième, je l'ai écrit de toutes pièces et le troisième est supposé faire la même chose que le deuxièeme avec des degrés.

Dans le premier, je signale que je n'ai pas vérifié les opérations de calcul, je n'ai regardé que la structure et la condition de parité.
Je vais chercher si j'ai commis une erreur dans mon premier code.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Kaetsu
Invité
Posté le : Dim 15 Avr 2012, 17:35   Citer 

Enfaite, mon programme sur ALGOBOX, je sais pas si vous l'avez regarder, je vais le mettre en dessous marche très bien, il fais exactement ce que je veut.

Mais quand je le met sur la calto en changeant pour qu'elle comprenne, sa fais n'importe quoi.

Voici mon code algobox:


Code

VARIABLES
nbe1 EST_DU_TYPE NOMBRE
nbe2 EST_DU_TYPE NOMBRE
nbe3 EST_DU_TYPE NOMBRE
nbe4 EST_DU_TYPE NOMBRE
nbe5 EST_DU_TYPE NOMBRE
nbe6 EST_DU_TYPE NOMBRE
nbe7 EST_DU_TYPE NOMBRE

DEBUT_ALGORITHME
AFFICHER "Le numérateur doit être donné sans le PI !"
PAUSE
AFFICHER "Le dénominateur doit être différent de 0 !"
PAUSE
AFFICHER "Numérateur = "
LIRE nbe1
AFFICHER "Dénominateur = "
LIRE nbe2
SI (nbe1==0 OU nbe2==0) ALORS
DEBUT_SI
AFFICHER "Le dénominateur ou le numérateur doivent être différent de 0 !"
FIN_SI
SINON
DEBUT_SINON
nbe3 PREND_LA_VALEUR (nbe1)/(nbe2)
SI (nbe3 = round((nbe3/2),0) * 2) ALORS
DEBUT_SI
nbe4 PREND_LA_VALEUR (nbe3)*(nbe2)
nbe5 PREND_LA_VALEUR (nbe1)-(nbe4)

AFFICHER " "
AFFICHER "Vous avez entré en numérateur la valeur suivante :"
AFFICHER nbe1
AFFICHER " "
AFFICHER "La valeur qui donnera un nombre paire est :"
AFFICHER nbe4
AFFICHER " "
AFFICHER "Pour le moment, vous obtenez cela :"
AFFICHER nbe4
AFFICHER "π / "
AFFICHER nbe2
SI (nbe5 >= 0) ALORS
DEBUT_SI
AFFICHER " + "
FIN_SI
SINON
DEBUT_SINON
AFFICHER " - "
FIN_SINON
AFFICHER nbe5
AFFICHER "π / "
AFFICHER nbe2
AFFICHER " "
AFFICHER "On prend la division de la nouvelle fraction:"
AFFICHER nbe3
AFFICHER " "
AFFICHER "On divise le chifre précédent par 2:"
nbe7 PREND_LA_VALEUR (nbe3)/2
AFFICHER nbe7
AFFICHER " "
AFFICHER "On utilise maintenant la formule :"
AFFICHER "2 * "
AFFICHER nbe7
AFFICHER " * π"
SI (nbe5 >= 0) ALORS
DEBUT_SI
AFFICHER " + "
FIN_SI
SINON
DEBUT_SINON
AFFICHER " - "
FIN_SINON
AFFICHER nbe5
AFFICHER "π / "
AFFICHER nbe2
AFFICHER " "
AFFICHER "Au final, votre valeur est égal à :"
AFFICHER nbe5
AFFICHER "π / "
AFFICHER nbe2
AFFICHER " "
FIN_SI
FIN_SINON
FIN_ALGORITHME



Voilà. Merci de votre aide à tous.

  Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Dim 15 Avr 2012, 17:41   Citer 

tu pourrais nous dire s'il te plait se qu'il est sensé y avoir à la place des "π" , ça doit être un caractère spécial, mais aucune idée lequel.

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
Kaetsu
Invité
Posté le : Dim 15 Avr 2012, 18:02   Citer 

C'est simplement le PI qui s'y trouve.

  Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Dim 15 Avr 2012, 20:18   Citer 

bon, je vais le traduire, on véra bien si ça marche (y'a pas de raisons que ça ne marche pas sur TI si ça marche sur algobox.

Pour info, je considèrerais que A=nbe1 ; B=nbe2 ; C=nbe3 ; D=nbe4 ; E=nbe5 ; F=nbe6 ; G=nbe7


Code

Disp "Le numérateur doit être donné sans le PI !"
Pause
Disp "Le dénominateur doit être différent de 0 !"
Pause
Input "Numérateur = ",A
Input "Dénominateur = ",B
If A=0 ou B=0
Then
Disp "Le dénominateur ou le numérateur doivent être différent de 0 !"
Else
A/B -> C
If (C=arrondi(C/2,0)*2)
Then
B*C -> D
A-D -> E
Disp " "
Disp "Vous avez entré en numérateur la valeur suivante :"
Disp A
Disp " "
Disp "La valeur qui donnera un nombre paire est :"
Disp D
Disp " "
Disp "Pour le moment, vous obtenez cela :"
Disp D
Disp "pi / "
Disp B
If E >= 0
Then
Disp " + "
Else
Disp " - "
End
Disp E
Disp "pi / "
Disp B
Disp " "
Disp "On prend la division de la nouvelle fraction:"
Disp C
Disp " "
Disp "On divise le chifre précédent par 2:"
C/2 -> G
Disp nbe7
Disp " "
Disp "On utilise maintenant la formule :"
Disp "2 * "
Disp G
Disp " * pi"
If E>= 0
Then
Disp " + "
Else
Disp " - "
End
Disp E
Disp "pi / "
Disp E
Disp " "
Disp "Au final, votre valeur est égal à :"
Disp E
Disp "pi / "
Disp B
Disp " "
End
End



Si je n'ai pas fait d'étourderies, le code devrait fonctionner (mis à part que tu ne véra que la fin car la TI affiche trop vite : rajoute un Pause tous les 7 Disp (ou mieux, met le à LA PLACE du 7ème Disp).

Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 15 Avr 2012, 21:16   Citer 

nbe3 PREND_LA_VALEUR (nbe1)/(nbe2)
Quand tu écris ceci sous algobox, tu obtiens un nombre entier ou décimal ?
Je crois que c'est ça le problème.
En effet tu effectues A/B->C puis C*B->D, ce qui n'a aucun intérêt si le quotient est décimal.
Si le problème vient de ça, il faut écrire dans la TI : B*int(C)->D

Mais je n'ai pas saisi le but de tous les calculs.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Kaetsu
Invité
Posté le : Dim 15 Avr 2012, 21:29   Citer 

Le code ne fait rien, il me met Fait sans rien afficher.

Je regarde cela demain en détails, on dois pas être loin.

  Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Dim 15 Avr 2012, 21:34   Citer 

Il ya de grandes chances que tu aies oublié un "End".

 Adresse email Haut de page Bas de page 
 
Kaetsu
Invité
Posté le : Dim 15 Avr 2012, 21:50   Citer 

J'obtient un nombre entier toujours, jamais de nombre décimal sous algobox.

  Haut de page Bas de page 
 
Kaetsu
Invité
Posté le : Mer 18 Avr 2012, 14:40   Citer 

Up, personne n'a une réponse à mon problème ?

  Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mer 18 Avr 2012, 15:07   Citer 

tu as testé avec la modif proposée par le dernier message de Linkakro?

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
Kaetsu
Invité
Posté le : Mer 18 Avr 2012, 15:35   Citer 

Oui, et cela ne marche pas.

  Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mer 18 Avr 2012, 16:11   Citer 

autre essie : met un ent( devant chaque division. Sinon, essaye la même chose avec partEnt(.

Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 6 requêtes