Poster un nouveau sujet Poster une réponse Page: 1,      >>
Convertisseur (n'importe quelle base)
Auteur Message
snap



Autorisation : Membre
Nb de messages : 369
Inscrit le : Dim 13 Fév 2011, 14:17
Posté le : Dim 14 Oct 2012, 20:23   Citer 

Salut, sa fait longtemps que j'ai rien mis Oo donc pour me faire pardonner (bah oui je devais vous mettre un monopoly que j'ai d'ailleurs toujours l'intention de finir) je vous ai fait un superbe convertisseur hum... Il est trèèèèès lent, mais il est tellement bien et j'ai mis tellement de temps a le faire! (2h). Le voila, en plus il est trèèèès long (398 octets environ)


Code

:" -> Chaîne 3
:"0123456789abcdefghijklmnopqrstuvwxyz -> Chaîne 0
:Repeat C
:Repeat A<37 et A>0 et B>0 et B<37
:Input "BASE NOMBRE :    ",A
:1 -> C
:Input "NOMBRE :         ",Chaîne 1
:Input "BASE FINALE :    ",B
:sous-chaîne(Chaîne0,1,A -> Chaîne2
:sous-châine(Chaîne0,1,B -> Chaîne0
:For(D,1,longueur(Chaîne1
:Ccarchaîne(Chaîne2,sous-chaîne(Chaîne1,D,1 -> C   <-- Oubliez pas le C au début
:End
:End
:End
:EffVar EFor(D,longueur(Chaîne1),1,-1
:E+(carChaîne(chaîne2,sous-chaîne(Chaîne1,D,1))-1)A^(longueur(Chaîne1)-D -> E
:End
:-1 -> V
:EffVar SWhile S<E
:V+1 -> V
:B^V -> S
:End
:For(W,V,0,-1
:PartEnt(E/B^W -> X
:Chaîne3+sous-chaîne(chaîne0,X+1,1 -> Chaine3
:E-XB^W -> E
:End
:sous-Chaîne(Chaîne3,2,longueur(Chaîne3)-1 -> Chaîne3
:Disp "
:If "0"=sous-chaîne(Chaîne3,1,1
:sous-chaîne(Chaîne3,2,longueur(Chaîne3)-1 -> Chaîne3
:Chaîne3



Voila voila. Comme d'hab vu qu'il y a plein de truc a améliorer, faut me les dire crazy.gif. Tout commentaire est le bienvenue.
En espérant que ce programme vous comblera de bonheur.
Cordialement,

Votre humble serviteur, SNAP.

----------------------
Commence un monopoly non graphique et compte bien le finir!
Lycée de l'escaut Valenciennes happy.gif
Fan de reflets d'acide!
le meilleur jeu du monde
http://snap-le-terrible.minitroopers.fr
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 14 Oct 2012, 22:08   Citer 

La réduction de Chaine0 pour n'avoir que le stricte nécessaire est originale mais innutile.

L'algorithme de division euclidienne par les puissances de Base maximales est intéressant mais moins performant que les divisions successives par Base.
... modulo(modulo(...,64),32), ... ) ; ce que tu fais pour Base=2
... ent(ent(X/2)/2) ... ; le plus optimisé pour Base=2
Les divisions par Base permettent de s'arrêter dès qu'un reste est nul, et d'avoir facilement la décomposition en relisant à l'envers les restes des divisions.

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



Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Lun 15 Oct 2012, 13:06   Citer 

Je me demande quel code est le plus léger entre celui là et celui de linkakro tongue.gif

Rapport à Algebrepowa...

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Lun 15 Oct 2012, 18:48   Citer 

For(D,1,longueur(Chaîne1),1,-1
est faux, cause une erreur argument.

Le code de snap (malgré l'erreur argument) occupe actuellement dans mon vti 395 octets.
Ma meilleure version incluant la reconversion occupe 268 octets.
(celle la plus légère sans option et sans les astuces de mdr1 est 4 octets plus lourde que celle de mdr1)

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



Autorisation : Membre
Nb de messages : 369
Inscrit le : Dim 13 Fév 2011, 14:17
Posté le : Mar 16 Oct 2012, 23:20   Citer 

Ah oui, sa doit être :


Code
For(D,longueur(Chaîne1),1,-1



Je suis pas sur et j'ai pas le programme sur moi la, je confirmerai ou non demain. Pour ceux que sa interesse mon monopoly est quasi-fini, manque plus que le parc gratuit, les caisses de communauté et chance à faire, quelques petits trucs a faire pour que sa rende joli et c'est terminé. Vous l'aurez dans quelques semaines tout au plus. Il est pas très très long, environ 6-7000 octets en additionnant les quatres programmes. Je vais surement les regrouper pour faire un seul programme, se sera plus simple, quoi que...

----------------------
Commence un monopoly non graphique et compte bien le finir!
Lycée de l'escaut Valenciennes happy.gif
Fan de reflets d'acide!
le meilleur jeu du monde
http://snap-le-terrible.minitroopers.fr
 Adresse email Haut de page Bas de page 
 
Skull
Invité
Posté le : Dim 02 Déc 2012, 0:36   Citer 

Bonjour,

J'ai fais aussi un convertisseur mais le mien a la particularité d'être très rapide, je l'ai même ralentie pour des effets qui ne servent que pour l'ergonomie. Si sa vous intéresse je peut vous le poster. 1068o de taille avec les effets...

-Skull-

  Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 02 Déc 2012, 0:50   Citer 

Allez, poste happy.gif
Je préfère que tu le postes dans un nouveau sujet mais après tout le faire ici permet de rassembler les programmes semblables.

Je ne m'attend pas à ce qu'il surpasse ceux de mdr1 et moi, mais qui-sait, tu as peut-être révolutionné le calcul des bases.

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



Autorisation : Membre
Nb de messages : 26
Inscrit le : Dim 02 Déc 2012, 10:06
Posté le : Dim 02 Déc 2012, 11:24   Citer 

Bonjour,

Inscription faite ! bigmouth.gif Je ne pense pas que je vais le regretter.

Ensuite je ne pense absolument pas révolutionner le calcule de base ! happy.gif
Et il y a peu de chance qu'il soit meilleur que le votre... A voir.

Je vais le poster ici en deux partie une avec les effets et l'autre sans les effets (en optimisation ^^). Je ne poste que la conversion binaire -> Décimal et
Décimal -> Binaire


Code

Version avec effet:

While W[différent de]2 or W[différent de]10
ClrHome
Disp "En quel base ?
Input ":",W
If w=2:Goto 2
If W=10:Goto 3
End

Lbl 2
2->B
ClrHome
Disp "Nombre a","convertir ?
Inuput ":",A
ClrHome
int (A/B)->Q
A-B*Q->R
R->J
Output(1,1,"°
69!
int (Q/B)->Z
Q-B*Z->R
R-I
Output(1,2,"°
69!
int (Z/B)->Q
Z-B*Q->R
R->H
Output(1,3,"°
69!
int (Q/B)->Z
Q-B*Z->R
R->G
Output(1,4,"°
69!
int (Z/B)->Q
Z-B*Q->R
R->F
Output(1,5,"°
69!
int (Q/B)->Z
Q-B*Z->R
R->E
Output(1,6,"°
69!
int (Z/B)->Q
Z-B*Q->R
R->D
Output(1,7,"°
69!
int (Q/B)->Z
Q-B*Z->R
R->C
Output(1,8,"°
69!
ClrHome
Output(1,1,A
Output(2,2,"=
Output(3,1,C
Output(3,2,D
Output(3,3,E
Output(3,4,F
Output(3,5,G
Output(3,6,H
Output(3,7,I
Output(3,8,J
Disp "
Stop

Lbl 3
ClrHome
Disp "Entre le premier","caractere puis","tape Enter.
Input "1:",A
Input "2:",B
Input "3:",C
Input "4:",D
Input "5:",E
Input "6:",F
Input "7:",G
Input "8:",H
ClrHome
Output (3,1,"Est-le bon nombre ?

Output (4,1,A
Output (4,2,B
Output (4,3,C
Output (4,4,D
Output (4,5,E
Output (4,6,F
Output (4,7,G
Output (4,8,H
Output (5,1,"1=Oui 2=Non ?
Input ":",Q
If Q=1:Goto 4
If Q=2:Goto 3

Lbl 4
ClrHome

If A=0:0->I
If A=1:128->I
Output(1,1,"°
69!

If B=0:0->J
If B=1:64->J
Output(1,2,"°
69!

If C=0:0->K
If C=1:32->K
Output(1,3,"°
69!

If D=0:0->L
If D=1:16->L
Output(1,4,"°
69!

If E=0:0->M
If E=1:8->M
Output(1,5,"°
69!

If F=0:0->N
If F=1:4->N
Output(1,6,"°
69!

If G=0:0->O
If G=1:2->O
Output(1,7,"°
69!

If H=0:0->P
If H=1:1->P
Output(1,8,"°
69!

I+J+K+L+M+N+O+P->R

ClrHome
Output (1,1,A
Output (1,2,B
Output (1,3,C
Output (1,4,D
Output (1,5,E
Output (1,6,F
Output (1,7,G
Output (1,8,H
Output (2,2,"="
Output (3,1,R
Pause

<------------------------------------------------------>

Version sans effet :

While W[différent de]2 or W[différent de]10
ClrHome
Disp "En quel base ?
Input ":",W
If w=2:Goto 2
If W=10:Goto 3
End

Lbl 2
2->B
ClrHome
Disp "Nombre a","convertir ?
Inuput ":",A
ClrHome
int (A/B)->Q
A-B*Q->R
R->J
int (Q/B)->Z
Q-B*Z->R
R-I
int (Z/B)->Q
Z-B*Q->R
R->H
int (Q/B)->Z
Q-B*Z->R
R->G
int (Z/B)->Q
Z-B*Q->R
R->F
int (Q/B)->Z
Q-B*Z->R
R->E
int (Z/B)->Q
Z-B*Q->R
R->D
int (Q/B)->Z
Q-B*Z->R
R->C
ClrHome
Output(1,1,A
Output(2,2,"=
Output(3,1,C
Output(3,2,D
Output(3,3,E
Output(3,4,F
Output(3,5,G
Output(3,6,H
Output(3,7,I
Output(3,8,J
Disp "
Stop

Lbl 3
ClrHome
Disp "Entre le premier","caractere puis","tape Enter.
Input "1:",A
Input "2:",B
Input "3:",C
Input "4:",D
Input "5:",E
Input "6:",F
Input "7:",G
Input "8:",H
ClrHome
Output (3,1,"Est-le bon nombre ?

Output (4,1,A
Output (4,2,B
Output (4,3,C
Output (4,4,D
Output (4,5,E
Output (4,6,F
Output (4,7,G
Output (4,8,H
Output (5,1,"1=Oui 2=Non ?
Input ":",Q
If Q=1:Goto 4
If Q=2:Goto 3

Lbl 4
ClrHome

If A=0:0->I
If A=1:128->I

If B=0:0->J
If B=1:64->J

If C=0:0->K
If C=1:32->K

If D=0:0->L
If D=1:16->L

If E=0:0->M
If E=1:8->M

If F=0:0->N
If F=1:4->N

If G=0:0->O
If G=1:2->O

If H=0:0->P
If H=1:1->P

I+J+K+L+M+N+O+P->R

ClrHome
Output (1,1,A
Output (1,2,B
Output (1,3,C
Output (1,4,D
Output (1,5,E
Output (1,6,F
Output (1,7,G
Output (1,8,H
Output (2,2,"="
Output (3,1,R
Pause

<---------------FIN----------------------->



Voila n’hésiter pas a critiquer.Je ne vous garantie pas que je n'est pas fais de faute de frappe mais moi il marche ni quel. Il me sert même plutôt bien en cours. ^^


-Skull-

----------------------
Concours de programmation touts niveaux...

http://tout82.free.fr/forum/sujet.php?sujet=3586
 Adresse email Haut de page Bas de page 
 
Cytropus



Autorisation : Membre
Nb de messages : 409
Inscrit le : Lun 07 Nov 2011, 12:09
Posté le : Dim 02 Déc 2012, 11:33   Citer 


Citer
Voila n’hésiter pas a critiquer.


On peut toujours chercher la petite bête godgrace.gif

J'ai pas grand chose à ajouter si ce n'est que ça :

Code
If A=0:0->I
If A=1:128->I

If B=0:0->J
If B=1:64->J

If C=0:0->K
If C=1:32->K

If D=0:0->L
If D=1:16->L

If E=0:0->M
If E=1:8->M

If F=0:0->N
If F=1:4->N

If G=0:0->O
If G=1:2->O

If H=0:0->P
If H=1:1->P



peut se transformer en ça :

Code
128(A=1)->I

64(B=1)->J

32(C=1)->K

16(D=1)->L

8(E=1)->M

4(F=1)->N

2(G=1)->O

(H=1)->P




Continu sur ta lancé glasses.gif

----------------------
Le nouveau site de tout82
 Adresse email Haut de page Bas de page 
 
Skull



Autorisation : Membre
Nb de messages : 26
Inscrit le : Dim 02 Déc 2012, 10:06
Posté le : Dim 02 Déc 2012, 11:36   Citer 

Merci du conseil... happy.gif Très sympa !

Tu l'as essayer ?

-Skull-

----------------------
Concours de programmation touts niveaux...

http://tout82.free.fr/forum/sujet.php?sujet=3586
 Adresse email Haut de page Bas de page 
 
Cytropus



Autorisation : Membre
Nb de messages : 409
Inscrit le : Lun 07 Nov 2011, 12:09
Posté le : Dim 02 Déc 2012, 11:40   Citer 

Pas trop le temps en ce moment, dsl eyeonly.gif

Par contre, pour une meilleure esthétique du programme, je te conseil de mettre les choix de base possible dans la boucle

Et 2 questions :
Citer
int (Q/B)->Z
Q-B*Z->R
R-I


Ce serai pas R->I

et a ce propos, pourquoi ne pas stocker dans I directement ? ahh.gif

----------------------
Le nouveau site de tout82
 Adresse email Haut de page Bas de page 
 
Skull



Autorisation : Membre
Nb de messages : 26
Inscrit le : Dim 02 Déc 2012, 10:06
Posté le : Dim 02 Déc 2012, 11:50   Citer 

En recopiant le code je me suis poser le même question, j'ai besoin de la variable R il me semble... Non entait non R = reste c plus claire happy.gif. Une division euclidienne c'est déjà assez complexe comme sa en programmation, on va pas en rajouter.

Mais sinon par rapport au tien il vaut quoi ? ^^ Je suis curieux hein ?!! laugh.gif laugh.gif loupe.gif

-Skull-

----------------------
Concours de programmation touts niveaux...

http://tout82.free.fr/forum/sujet.php?sujet=3586
 Adresse email Haut de page Bas de page 
 
Cytropus



Autorisation : Membre
Nb de messages : 409
Inscrit le : Lun 07 Nov 2011, 12:09
Posté le : Dim 02 Déc 2012, 12:08   Citer 

Par rapport au mein godgrace.gif !
tu peux pas comparer, je l'ai fait en Visual Basic glasses.gif

Je l'ai fait un peu de la même façon que ld

----------------------
Le nouveau site de tout82
 Adresse email Haut de page Bas de page 
 
Cytropus



Autorisation : Membre
Nb de messages : 409
Inscrit le : Lun 07 Nov 2011, 12:09
Posté le : Dim 02 Déc 2012, 12:31   Citer 

heu, non godgrace.gif

fin du Hs

----------------------
Le nouveau site de tout82
 Adresse email Haut de page Bas de page 
 
ld
Avatar

Autorisation : Membre
Nb de messages : 373
Inscrit le : Jeu 23 Sep 2010, 16:05
Posté le : Lun 28 Oct 2013, 19:39   Citer 

EDIT : NOUVELLE VERSION

De la base 10 à X et inversement, pour X de 2 à 36.
Au défit de faire mieux et plus léger !

Prgm AllBase V3 187 octets.

Code
:"0123456789ABCDEF->Chaîne0   ----   (Allez jusqu'à Z pour la base 36).
:EffEcr:0->N:0->R
:Input:"DE BASE ",X
:Input "A ",Y
:Input "N= ",Chaîne1
:longueur(Chaîne1->L
:For(Z,0,L-1
:carChaîne(Chaîne0,sous-Chaîne(Chaîne1,L-Z,1))-1
:R+X^ZRép->R
:End
:Repeat non(R
:N+1->N
:Output(8,17-N,sous-Chaîne(Chaîne0,1+R-Yent(R/Y),1
:ent(R/Y->R
:End


Vous pouvez le tester à cette adresse :
http://www.kaagaard.dk/service/convert.htm

----------------------
Note Éphéméride Chrono Bombrman BlueFishEncryptor Labygénérateur Nord BandeauDeTexte LunarPhase Syracuse Papy-Jump Convertisseur ! SolveurDeSudoku VérificateurDeCodesBanquaire PrgmADiviser CryptageDeVigenere MiniSolv Reed-Solomon Code128Géodésie
 Adresse email Haut de page Bas de page 
 
Attila



Autorisation : Membre
Nb de messages : 11
Inscrit le : Jeu 24 Oct 2013, 14:17
Posté le : Lun 28 Oct 2013, 21:44   Citer 

Désolé d'être un débutant (bah il faut bien un boulet de temps à autre non ?), mais à quoi serve tout ces convertisseurs ?

Ps:pour ce que ca interèsse j'ai posté mon premier programme et j'ai mis 3 semaine à le faire ... Alors est-ce que vous pourriez aller jetez un coup d'oeil ? Le post se nomme "mon premier programme, un sshoot'em up du nom de Phoenix Lord"...

Sur ce, salutation oh génies que vous êtes godgrace.gif

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 29 Oct 2013, 16:11   Citer 

----- ld :
tu t'es enfin décidé à utiliser les chaines de caractères.

Je me dis toujours que Mdr1 est imbattable, mais tu n'offres pas les mêmes fonctionnalités.
C'est-à-dire que tu effectues une seule conversion à la fois. On doit commander A->10 puis 10->B quand Mdr1 et ses semblables (dont moi) font naturellement A->10->B.
Je préfère quand-même permettre de base quelconque à quelconque plutôt que passer manuellement par 10.

Par contre tu as placé le Prompt N avant le test de la base, cela doit obliger à écrire deux fois logiquement ???
En plus ce serait assez simple de saisir une chaine puis d'interpréter avec expr() dans le cas de la saisie base 10.

----- Attila :
il est question de convertir l'écriture des nombres dans des bases différentes. La base est le nombre de symboles disponibles et donc la retenue. Les bases 10,2,16,60 sont les quatre bases les plus utilisées, par les humains ou par les ordinateurs. (la notation horaire cependant écrit en base 10 tout en effectuant les retenues à 60)
On a le nombre écrit par les digits a,b,c et la base z avec :
(abc)z = a*z^2 + b*z^1 + c*z^0 = a*z^2 + b*z + c
Exemple : (21)10=(10101)2=(15)16 car 21=16+4+1=16+5

----------------------
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 
 
m@thieu41



Autorisation : Membre
Nb de messages : 856
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Mar 29 Oct 2013, 16:30   Citer 


Citer
Les bases 10,2,16,60 sont les trois bases


Ca fait 4 winkle.gif

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 29 Oct 2013, 16:35   Citer 

Erreur de réécriture. Merci.

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



Publicité    



 
ld
Avatar

Autorisation : Membre
Nb de messages : 373
Inscrit le : Jeu 23 Sep 2010, 16:05
Posté le : Mar 29 Oct 2013, 16:43   Citer 

"Par contre tu as placé le Prompt N avant le test de la base, cela doit obliger à écrire deux fois logiquement ???"
J'ai inverser deux lignes en recopiant. MERCI ! ahh.gif

"En plus ce serait assez simple de saisir une chaine puis d'interpréter avec expr() dans le cas de la saisie base 10."
Pas con, je vais essayer...

----------------------
Note Éphéméride Chrono Bombrman BlueFishEncryptor Labygénérateur Nord BandeauDeTexte LunarPhase Syracuse Papy-Jump Convertisseur ! SolveurDeSudoku VérificateurDeCodesBanquaire PrgmADiviser CryptageDeVigenere MiniSolv Reed-Solomon Code128Géodésie
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse Page: 1,      >>





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2025 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink