Bonjour,
on me demande dans un exercice d'ecrire une fonction itérative prenant en entrée un entier et retournant sa représentation en binaire.
Voici ce que j'ai écrit:
fonction binaire (val n:entier):entier
var res: entier =0;
var d: entier;
var i: entier=0;
debut
si (n<0) alors
retourner (erreur);
finsi;
tantque (n<>0) faire
d=n/2;
si (n=2d) alors
res= res + 0*10^i ; //je pense que cette ligne peut etre supprimée
i=i+1;
n=d;
sinon
res=res+1*10^i;
i=i+1;
n=d;
finsi;
fintantque;
retourner (res);
fin
finfonction
Peut etre y-a-t-il plus simple, mais j'aimerais garder ma fonction sous cette forme. Seul problème: j'ai l'impression de ne pas avoir le droit d'utiliser les puissances (10^i). Je ne l'ai vu nulle part dans le cours. Quelqu'un sait-il de quelle manière je peux écrire 10^i en utilisant uniquement *, + et - ?
Merci d'avance
Bonne journée
Aïda
Ben oui ! Tu peux définir une variable dixpuissi, initialisée à 1 et remplacer :
si (n=2d) alors
res= res + 0*10^i ; //je pense que cette ligne peut etre supprimée
i=i+1;
n=d;
sinon
res=res+1*10^i;
i=i+1;
n=d;
finsi;
par
si (n<>2d) alors
res=res+dixpuissi;
finsi;
dixpuissi=dixpuissi*10;
n=d;
J'ai enlevé la ligne qu'à juste titre tu voulais enlever
et il n'était pas nécessaire d'écrire deux fois i=i+1 et n=d. Il suffisait de l'écrire une seule fois après le finsi. D'ailleurs i ne sert donc plus à rien et j'ai supprimé son incrémentation.
Ca marche!!! Merci beaucoup, je n'aurais jamais pensé à définir cette variable, c'est bête, non? J'ai essayé avec n=4, ca marche, je vais vérifier avec n=77, mais je suis certaine que ça ne posera pas de problème.
Merci encore,
Bonne journée,
Aïda
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :