| Un peu d'algorithmique / simplification de programme |
| Auteur |
Message |
The K
Invité
|
Posté le : Lun 10 Oct 2011, 19:16
|
|
|
Bonjour à tous 
Je vous poserai deux questions ici ... la première, la voici. J'aimerai savoir si il y a moyen de faire sur TI un algorithme tel que celui-ci :
Demander A,B,C
(la partie que je ne sais pas : )
Trouver U et V tel que :
AC = UV
B = U+V
(et enfin : )
Afficher U
Afficher V
Ma seconde question est de savoir si on peut raccourcir ce bout de code qui est (je trouve) très lourd 
| Code | Prompt B
If B=0:Goto 2B
Prompt C
If C=0:Goto 2B
Prompt D
If D=0:Goto 2B
Prompt E
If E=0:Goto 2B
Prompt F
If F=0:Goto 2B
Prompt G
If G=0:Goto 2B
Prompt H
If H=0:Goto 2B |
Merci à vous d'avance 
The K
|
| |
|
| |
The K
Invité
|
Posté le : Lun 10 Oct 2011, 21:02
|
|
|
Euh ... AC -> U ?
J'ai marqué "AC = UV" ^^' T'es sur de toi ^^'
(si je me trompe la faudra m'expliquer )
|
| |
|
| |
tilo1996
Autorisation : Membre
Nb de messages : 122
Inscrit le : Sam 23 Avr 2011, 10:47
|
Posté le : Lun 10 Oct 2011, 21:08
|
|
|
Ah oui en effet. Je revois mon prog... [Edit] Je suis un peu cramé... Je verrai demain... Je supprime mon premier post
|
 |
|
| |
The K
Invité
|
Posté le : Lun 10 Oct 2011, 21:18
|
|
|
Nan parce que moi j'ai essayé qqes petits trucs, mais je tombais sur des carrés ce qui impliquait plusieurs solutions, un code assez dense (et au passage pas de mon niveau ^^), etc etc ...
Bref ^^'
|
| |
|
| |
azerty1
Autorisation : Membre
Nb de messages : 438
Inscrit le : Dim 12 Déc 2010, 20:44
|
Posté le : Lun 10 Oct 2011, 21:19
|
|
|
Tu veux que cela gère les décimaux, ou seulement les entiers (relatifs)?
Si seulement entiers, on peut décomposer le produit AC et dans les facteurs trouvés, en rassemblé certains (en multipliant) pour arriver a ce que la somme de 2 facteurs donnant AC soit égale à B, je me penche plus dessus demain si j'ai le temps 
Sachant que j'ai déjà un code pour décomposer un nombre en facteurs (premiers).
---------------------- Ti-Connect 64bits
PROTECT |
 |
|
| |
The K
Invité
|
Posté le : Lun 10 Oct 2011, 21:53
|
|
|
L'idéal serait de trouver un code qui marche pour tous les nombres 
Mais je suis preneur de tout ^^ et aimerai bien voir le pgrm que tu me décris ^^
|
| |
|
| |
azerty1
Autorisation : Membre
Nb de messages : 438
Inscrit le : Dim 12 Déc 2010, 20:44
|
Posté le : Lun 10 Oct 2011, 22:05
|
|
|
Oui évidemment! Regarde ici! après si les facteurs trouvés ne suffisent pas, ont peut toujours rajouter des 1... 
---------------------- Ti-Connect 64bits
PROTECT |
 |
|
| |
Métalocif
Autorisation : Membre
Nb de messages : 92
Inscrit le : Lun 10 Mai 2010, 19:24
|
Posté le : Mar 11 Oct 2011, 17:27
|
|
|
Pour raccourcir ton code,utilise la propriété du produit nul:
| Code | Prompt [tes valeurs]
If BCDEFGH=0
Goto 2B |
Ce code implique que si une seule des variables est nulle,le programme saute jusqu'au label 2B...ce qui est, je l'espère, ton souhait(dans le cas contraire, je devrais me remettre en question et je déteste ça! ) !
En espérant t'avoir aidé,
Métalocif
---------------------- "On ne ment jamais autant qu'avant les élections, pendant la guerre et après la chasse." Clémenceau |
 |
|
| |
The K
Invité
|
Posté le : Mar 11 Oct 2011, 22:01
|
|
|
Metaloctif, ma (lourde) méthode me permettait de passer direct au 2B si E était égal a 0. Ici, ce que tu me décris est exactement la mm chose que ça :
| Code | Prompt B, C, D, E, F, G, H
Goto 2B |
Donc voilà ^^' (cependant tu mets l'index sur un défaut de mon programme ... Il aurait fallu que je rajoute ça a la fin : If H [différent de] 0 : Goto 2B (ou qqchose du même genre ) )
Quand à toi Trotuthutur, eh bien ... Mes modestes connaissances de ti-basic font que je ne comprend ... Strictement rien a ton code XD. Et donc par conséquent je ne comprend pas le rapport de ton programme avec mon algorithme ><'
Une explication ^^' ?
|
| |
|
| |
Métalocif
Autorisation : Membre
Nb de messages : 92
Inscrit le : Lun 10 Mai 2010, 19:24
|
Posté le : Mer 12 Oct 2011, 13:53
|
|
|
Au fait que tu sembles avoir des difficultés à orthographier des pseudos n'étant pas une lettre de l'alphabet? Aucune.
Plus sérieusement (et avec moins de méchanceté),tu peux essayer la méthode dite de substitution pour résoudre les systèmes:
AC=UV
Donc U=AC/V
Avec la deuxième équation:
B=U+V
B=AC/V+V
Bon,là ça ne marche pas, mais tu vois l'idée...
Ta lourde méthode te permettait effectivement d'arrêter de demander des valeurs dès qu'une est égale à 0.La mienne, bien que plus légère, n'offrait pas cette possibilité.
Je dois aller au lycée ,mais je reviendrai!
Métalocif
---------------------- "On ne ment jamais autant qu'avant les élections, pendant la guerre et après la chasse." Clémenceau |
 |
|
| |
The K
Invité
|
Posté le : Mer 12 Oct 2011, 18:52
|
|
|
Dsl de la faute d’orthographe x')Mais c'est pas toujours simple depuis un ipod ... bref je regarde ce que tu m'as envoyé et j'y réfléchis ...
|
| |
|
| |
The K
Invité
|
Posté le : Mer 12 Oct 2011, 19:25
|
|
|
En fait ce que me dis est vrai ... Mais ne m'avance pas 
Parce que sinon on tombe sur des trucs Genre :
U=AC/(B-U) sachant qu'on ne connais pas U donc :
U=AC/[B-(AC/(B-U))] etc. Etc.
Peut être mon algorithme est impossible a résoudre par calculette 
|
| |
|
| |
sandro
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
|
Posté le : Mer 12 Oct 2011, 21:53
|
|
|
Je crois que j'ai réussit à trouver mathématiquement (se mettre en mode complexxe pour éviter les erreures, cout à éliminer les solutions non réelles par la suite). Voici le résonnement (je suis trop fatiguer pour le programmer ce soir, je m'y met demain si j'ai le temps.
AC=UV
B=U+V
V=AC/U
B=U+AC/U
BU=U²+AC
0=U²-BU+AC
Delta =B²-4*1*AC
U1=(B-rac(B²-4AC))/2 et U2=(B+rac(B²-4AC)/2
Donc V=AC/U1 ou AC/U2
Il reste plus qu’a vérifier si les résultats sont cohérents (je ne suis pas sur que ce soit tous des équivalences, donc il faut vérifier numériquement la réciproque).
ATTENTION : si B=0, alors U=0 et/ou V=0 donc AC = U ou AC = V
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes |
 |
|
| |
The K
Invité
|
Posté le : Mer 12 Oct 2011, 22:16
|
|
|
Merci a toi sandro 
Mais j'ai cependant qqes questions 
Multiplier l'équation au carre, oui, mais ne faut il pas faire, tôt ou tard après, une racine carrée ?
Sinon, si B=0, U ou/et V n'est pas forcément égal à 0 ... -3+3 est bien égal à 0 
|
| |
|
| |
Google_AdSense
|
Publicité
|
|
|
|
| |
sandro
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
|
Posté le : Jeu 13 Oct 2011, 18:54
|
|
|
Ups, oublie donc cette dernière partie, le reste n'en reste pas moins correct (enfin je pense).
Sinon, tu t'occupe toi même de le programmer ou tu as besoins d'aide?
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes |
 |
|
| |
Google_AdSense
|
Publicité
|
|
|
|
| |
The K
Invité
|
Posté le : Ven 14 Oct 2011, 16:03
|
|
|
J'essaie un petit pgrm on verra 
|
| |
|
| |
The K
Invité
|
Posté le : Ven 14 Oct 2011, 16:42
|
|
|
Donc voila ce que j'ai essayé :
| Code |
EffEcr
Prompt A,B,C
(B-[racine](B²-4AC)/2 -> D
(B+[racine](B²-4AC)/2 -> E
AC/D -> F
AC/E -> F
Disp "U1",D,"V1",F,"U2",E,"V2",F
Pause
EffEcr
|
Passons au test : 4x²-7x+3=0
A=4 B= 7 C=3
Une solution est le système (-4);(-3)
Car : (-4) + (-3) = (-7) = B
(-4) x (-3) = 12 = AC
Or ma TI ne m'indique pas ce système en solution ... en fait elle me met deux systèmes dont le produit est bel et bien égal à AC mais dont la somme n'est pas égale à B.

Une petite idée sinon pour simplifier mon code du premier post ^^' ?
|
| |
|
| |
sandro
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
|
Posté le : Ven 14 Oct 2011, 21:15
|
|
|
Um, je crois qu'il manque une parrenthèse avant les /2.
Sinon, y a-t-il un énnoncé d'origine? si oui, pourrais-tu le poster, ça purrais peut-être me donner des idées.
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes |
 |
|
| |
The K
Invité
|
Posté le : Ven 14 Oct 2011, 22:34
|
|
|
Et le pire c'est que t'as raison xD
J'avais juste oublie une parenthèse 
Si tu veux savoir pour quoi c'était ... C'est la manière british de trouver le discriminant (je fais classe euro) c'est fou comment ils se compliquent la vie je trouve 
Hum et sinon pour mon code du premier post que penses tu d'une boucle avec hile et produit nul genre ça ?
| Code |
1-> I
While I [différent de] 0
Prompt A: AI -> I
End
Goto 2B
|
Avec des valeurs de A a H y a t'il moyen de faire un code pas beaucoup plus long ?
(je ne connais pas toutes les instructions utilisables )
Merci en tous cas pour ton algorithme sur U et V 
[/code]
|
| |
|
| |
sandro
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
|
Posté le : Sam 15 Oct 2011, 10:26
|
|
|
Le plus simple serait :
| Code | Lbl 2
Prompt B,C,D,E,F,G,H
If non(BCDEFGH:Goto2 |
Mais ça à l'inconvéniant que l'on recommence que à la fin si jamais il y a une erreur.
Sinon tu aurrais aussi
| Code | {0 -> L1
"BCDEFGH -> Chaîne1
Lbl 2
For(A,1,7
Imput SousChaîne(Chaîne1,A,1),Z
Z -> L1(A
If non(prod(L1:Goto 2
End
L1(1 -> B:L1(2 -> C:L1(3 -> D:L1(4 -> E:L1(5 -> F:L1(6 -> G:L1(7 -> H |
Ce code est bien plus éfficace si tu enlève la première ligne et que reemploi directement la liste ou ses valeures.
Sandro
PS : pour ton code, tu peut simplifier par
| Code | 0 -> A
While non(A
Prompt A
End
//puis tu recommence avec B, puis C, ... |
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes |
 |
|
| |
The K
Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
|
Posté le : Sam 15 Oct 2011, 11:12
|
|
|
Euh ... ton second code est un peu compliqué pour moi pour la simple et bonne raison que je ne maitrise, ni n'utilise les chaines ^^' A quoi servent elles ?
Et dans le troisième je ne comprends pas trop le rôle du "non" ... ça veut dire "tant que A n'a pas de valeur, demander A" ?

---------------------- La la la ...
Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL
Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO
Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind
Mes nouveaux programmes de calcul formel : FCarré FPrime
Projet base de données : ici mais abandonné. Trop de travail ... |
 |
|
| |
Google_AdSense
|
Publicité
|
|
|
|
| |
sandro
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
|
Posté le : Sam 15 Oct 2011, 21:42
|
|
|
le non( signifie "0=(" mais c'est plus rapide et plus optimisé.
pour les chaînes (c'est du texte en variable), tu peut à la place faire ça (même si c'est un peu moins beau:
| Code | {0 -> L1
Lbl 2
For(A,1,7
Imput "NOMBRE",Z
Z -> L1(A
If non(prod(L1:Goto 2
End
L1(1 -> B:L1(2 -> C:L1(3 -> D:L1(4 -> E:L1(5 -> F:L1(6 -> G:L1(7 -> H |
Sandro
PS : la chaîne servait ici à afficher les lettres.
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes |
 |
|
| |
linkakro
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Sam 15 Oct 2011, 21:49
|
|
|
Les chaînes contiennent du texte.
On peut appliquer des tests sur ces chaînes et surtout "découper" les chaînes avec la fonction sous-chaîne.
Sans entrer dans les détails, il utilise une chaîne pour qu'un seul input affiche successivement A,B,...,H : cela évite de multiplier les input et prompt.
"non(" est une opération logique.
Elle transforme 0 en 1 et tous les autres nombres en 0.
sandro: une bonne fois pour toute, utilise Repeat A plutôt que While non(A quand le test est innutile à l'entrée.
---------------------- 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 |
 |
|
| |
sandro
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
|
Posté le : Sam 15 Oct 2011, 21:54
|
|
|
Ups, désolé, je l'oublie souvant celui là.
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes |
 |
|
| |
linkakro
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Sam 15 Oct 2011, 22:28
|
|
|
Le système revient effectivement à résoudre X^2-BX+AC.
Sauf que je l'ai trouvé en appliquant des propriétés connues et avec une recherche : X^2-SX+P dont les solutions sont déjà établies comme étant les antécédents de S et P par somme et produit.
Je suis surpris que tu aies trouvé l'équation du second degré si facilement.
A plusieurs vous auriez dû trouver la résolution vu que vous aviez déjà l'équation.
Je crois que le C ne sert à rien.
| Code | Prompt A,B,C
rac(B^2-4AC->D
Disp (B-D)/2,(B+D)/2 |
---------------------- 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 |
 |
|
| |
The K
Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
|
Posté le : Dim 16 Oct 2011, 10:37
|
|
|
Les chaînes servent à rentrer des caractères et les sous-chaînes à les morceler euh ... puis-je avoir un petit exemple svp ^^'
Je veux dire, c'est pas que l'algo que vous proposez est faux, mais mélanger des listes et des chaînes quand j'ai du mal avec les listes et que je ne connais pas les chaînes, bref ...
Merci à vous 
---------------------- La la la ...
Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL
Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO
Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind
Mes nouveaux programmes de calcul formel : FCarré FPrime
Projet base de données : ici mais abandonné. Trop de travail ... |
 |
|
| |
sandro
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
|
Posté le : Dim 16 Oct 2011, 20:19
|
|
|
pour les chaînes :
| Code | Disp "ABC" // ABC est une chaîne
"ABC" -> Chaîne1 //Chaîne1 est dans Var/7/1 ; enregistre ABC dans la variable chaîne
Disp "ABC"+"DE" //affiche ABCDE
Disp sousChaîne("ABCDE",2,3 //affiche BCD
Longueur("ABCDE" //donne 5
CarChaîne("ABCDE","BCD" //donne 2
Carchaîne("ABCDE","FIG" //donne 0 (pas trouvable)
Carchaîne("ABCDEABCDE",AB,2 //donne 6 (on ne cherche que à partir du second carractère) |
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes |
 |
|
| |
The K
Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
|
Posté le : Dim 16 Oct 2011, 20:57
|
|
|
Ah ok ... Merci a toi ça pourra me servir je pense
Tiens pendant que j'y suis et étant curieux ... A quoi correspondent les "BDG" et "Img" dans les variables ?
---------------------- La la la ...
Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL
Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO
Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind
Mes nouveaux programmes de calcul formel : FCarré FPrime
Projet base de données : ici mais abandonné. Trop de travail ... |
 |
|
| |
azerty1
Autorisation : Membre
Nb de messages : 438
Inscrit le : Dim 12 Déc 2010, 20:44
|
Posté le : Dim 16 Oct 2011, 21:11
|
|
|
Image, ce sont des images que tu peux dessiner, sur le graphique, puis sauvegarder [2nde]+[prgm] tu trouveras tout se dont tu as besoin, et les BDG en gros se sont des propriétés comme la taille de la fenetre etc... Tu peux sauvegarder et rappeler tout cela dans un programme 
---------------------- Ti-Connect 64bits
PROTECT |
 |
|
| |
Persalteas
Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
|
Posté le : Lun 17 Oct 2011, 8:34
|
|
|
banque de données graphiques (BDG) sauvegarde toutes tes fonctions [f( ] de tous les modes, la taille de ta fenêtre, et les paramètres de graphique (axes On-Off, quadrillage etc...)
|
 |
|
| |
The K
Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
|
Posté le : Mer 19 Oct 2011, 14:16
|
|
|
Ah d'accord ^^
Et comment les utilises-t-on ? 
Je veux dire, dans un programme, que doit on mettre comme instruction pour faire fonctionner le code ? 
---------------------- La la la ...
Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL
Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO
Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind
Mes nouveaux programmes de calcul formel : FCarré FPrime
Projet base de données : ici mais abandonné. Trop de travail ... |
 |
|
| |
sandro
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
|
Posté le : Mer 19 Oct 2011, 21:29
|
|
|
SauveImage X ou SauveBDG X avec X un entier de 0 à 9 pour sauvegarder
RappelImage X ou RappelBDG X idem mais il faut que l'on ai déjà sauvegardé ultérieurement (dans le programme ou avant).
C'est fonctions peuvent par example servir à remettre la TI comme avant un jeu : au début tu sauvegarde les deux, et à la fin tu les restaure et tu les supprime avec DelVar.
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes |
 |
|
| |
The K
Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
|
Posté le : Ven 21 Oct 2011, 16:39
|
|
|
Ah oui ! J'ai déja vu ça dans quelques programmes que j'ai recopié 
bref, merci à toi Sandro et à tous ceux qui m'ont répondu ici 
---------------------- La la la ...
Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL
Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO
Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind
Mes nouveaux programmes de calcul formel : FCarré FPrime
Projet base de données : ici mais abandonné. Trop de travail ... |
 |
|
| |