Forum

Catégorie : Programmes
Forum : Les programmes des internautes
Vues : 1220
Réponses : 4
Type : discussion
Etat : réponses autorisées

Conversion binaire

Mingerton le 26/11/2013 à 18:50
Entre deux heures de cours j'ai programmé ce petit truc pour convertir un nombre du système classique en système binaire (ex : 9 donne 1001). Le code m'a l'air bon, mais je suis pas super doué pour voir où est l'erreur qui l'empêche de fonctionner correctement. Je le donne, et si vous voulez chercher, bonne chance. J'y travaille :
Code
: Prompt A
: 0->Y
: ClrHome
: While E (supérieur ou égal) R
: iPart(A/2->E
: A-2E->R
: Output(1,Y,R
: E->A
: Y+1->Y
: End


-> flèche sto
m@thieu41 le 26/11/2013 à 19:07
Bonjour,

Déjà en utilisant un affichage direct, tu te limite à 16 chiffres, et donc au nombre 65535 au maximum.

Ensuite: il faut lire les restes obtenus dans l'ordre inverse, donc les afficher en conséquence:
Output(1,16-Y,R

Enfin: ta condition de sortie est éronée: il faut tourner tant que le résultat de la division n'est pas null, soit tant que A n'est pas nul. Là tu teste si E>=R ce qui sera toujours vrai (puisque E est positif ou null et que R vaut 1 ou 0).

Code
: Prompt A
: 1->Y
: ClrHome
: While A
: iPart(A/2->E
: A-2E->R
: Output(1,16-Y,R
: E->A
: Y+1->Y
: End


Voilà ça devrait marcher winkle.gif (pas testé)
Mingerton le 26/11/2013 à 19:12
Merci beaucoup ! J'avais totalement zappé l'ordre inverse, bête erreur. En tout cas ça marche !
m@thieu41 le 26/11/2013 à 19:42
Ok super ^^

Si ça t'intéresse, tu peux regarder d'autres techniques plus poussées existent et permettent de passer de n'importe quelle base à n'importe quelle autre:
https://web.archive.org/web/20[...]code-complet-10
Mingerton le 28/11/2013 à 19:09
J'irai voir. J'ai modifié le premier code, avec l'ordre inverse inutile que Y soit égal à 1