Inscription / Connexion Nouveau Sujet
Niveau terminale
Partager :

algorithme

Posté par
starwars
30-11-14 à 11:43

Bonjour à tous, il m'est demandé pour ce soir de réaliser cette algorithme sur algobox :

ecrire un algorithme permettant, par la méthode des divisions euclidiennes de convertir un entier de la base 10 à la base 16

J'ai déjà commencé mais je ne sais pas si c'est bon et c'est le cas je ne sais pas continuer :  



Merci !

algorithme

Posté par
starwars
algorithme base 10 a base 16 30-11-14 à 13:14


Bonjour à tous, il m'est demandé pour ce soir de réaliser cette algorithme sur algobox :

ecrire un algorithme permettant, par la méthode des divisions euclidiennes de convertir un entier de la base 10 à la base 16

J'ai déjà commencé mais je ne sais pas si c'est bon et c'est le cas je ne sais pas continuer :  

algorithme base 10 a base 16

*** message déplacé ***

Posté par
Leile
re : algorithme 30-11-14 à 13:38

bonjour,

avant d'écrire l'algortihme, il faut savoir comment tu fais sur papier, avec un crayon..


comment fais tu ?

je te donne un exemple : 362 en base 10

362 divisé par 16 ==> Quotient = 22, reste = 10  ==> A sera le chiffre de rang 0 (unités)
22 divisé par 16 ==> quotient = 1, reste 6 ==> 6 est le chiffre de rang 1
1 divisé par 16 ==> quotient = 0, reste = 1 ==> 1 est le chiffre de rang 2 et j'arrete.


en langage naturel, ca donne :
début
entrer E
afficher E
rang = 0
Q = quotient de (E/16)
reste = E - (Q*16)   ===> reste de la division euclidienne

tant que E différent de 0 faire
  chiffre = reste
  si chiffre = 10, alors chiffre = A
  si chiffre = 11, alors chiffre = B
etc.. jusque
  si chiffre = 15, alors chiffre = F
afficher "rang " rang "chiffre " chiffre
rang = rang + 1
E = Q
Q = quotient de (Q/16)
reste = E - (Q*16)
fin tant que

fin prog

je n'ai pas testé.. je te laisse faire, et traduire en algobox..

bon courage !

Posté par
starwars
re : algorithme 30-11-14 à 14:02

Vous dites faire:  chiffre = reste mais reste est du type nombre et chiffre est du type chaine car on lui associe A, B ... comment dois je faire ?

Posté par
Leile
re : algorithme 30-11-14 à 14:08

il n'y a pas de fonctions qui te permet de placer un nombre dans une chaine ?

autre façon de faire : déclarer une table de 16 postes
0 1 2 3 4 5 6 7 8 9 A B C D E F

et au lieu de "
chiffre = reste
et faire les tests si chiffre = 10, alors chiffre = A ... etc... "

tu mets : chiffre = table(reste+1)

je ne suis pas pro d'algobox. Tu sais déclarer une table ?

Posté par
starwars
re : algorithme 30-11-14 à 14:10

Non je n'ai jamais déclaré de table..

Posté par
Leile
re : algorithme 30-11-14 à 14:15

je vais essayer de voir comment on fait, et je reviens.

Posté par
starwars
re : algorithme 30-11-14 à 14:16

Merci beaucoup, c'est très gentil de votre part

Posté par
Leile
re : algorithme 30-11-14 à 14:45

Déclaration de la variable table :

table EST_DU_TYPE chaine
chiffre est du type chaine

ensuite, il faut initialiser les 16 caractères de la table
table prend la valeur "0123456789ABCDEF"

et
à la place de
chiffre = reste
  si chiffre = 10, alors chiffre = A
  si chiffre = 11, alors chiffre = B
etc.. jusque
  si chiffre = 15, alors chiffre = F


je mettrais
chiffre prend la valeur table.substr(reste,1)

cette instruction place dans chiffre le reste+1 caractère de table (d'après l'aide algobox).. A verifier !

Citation :
Il est possible d'extraire le contenu d'une chaîne avec l'instruction chaîne.substr(position_premier_caractère_à_extraire,nombre_de_caractères_à_extraire).
Attention : la premier caractère a pour position 0 (et pas 1)


tiens moi au courant !


Posté par
starwars
re : algorithme 30-11-14 à 14:57

Si j'ai bien compris il faut que je rentre table.substr(0,15) ou (0,F) ? j'ai essaye les deux l'algorithme plante directement

Posté par
Labo
re : algorithme base 10 a base 16 30-11-14 à 14:57

Bonjour,
remarque  la variable i ne sert pas
après tant que :
  calcule d'abord le reste prend la valeur  Q%16
et ensuite Q prend la valeur floor(Q/16)



*** message déplacé ***

Posté par
fm_31
re : algorithme base 10 a base 16 30-11-14 à 14:59

Bonjour ,

sans être complètement mauvais , ton algorithme ne va pas donner la bonne traduction .
Tout d'abord tu initialises  i  et tu ne l'utiles pas .
Ensuite un nombre en base 16 est construit avec les chiffres de 0 à 9  plus 6 lettres de A à F . Par exemple 15 en décimal se traduit par F en base 16 .


Cordialement

*** message déplacé ***

Posté par
Leile
re : algorithme 30-11-14 à 15:00


table EST_DU_TYPE chaine

init
table prend la valeur "0123456789ABCDEF"

dans la boucle TANT QUE :  
chiffre prend la valeur table.substr(reste,1)

Posté par
starwars
re : algorithme base 10 a base 16 30-11-14 à 15:01

Je sais qu'un nombre en base 16 est construit avec les chiffres de 0 à 9  plus 6 lettres de A à F mais je ne sais pas comment le traduire sur algorithme ? pouvez vous me mettre sur la voie sil vous plait ?

*** message déplacé ***

Posté par
Leile
re : algorithme 30-11-14 à 15:04

début
table prend la valeur "0123456789ABCDEF"
entrer E
afficher E
rang = 0
Q = quotient de (E/16)
reste = E - (Q*16)   ===> reste de la division euclidienne

tant que E différent de 0 faire
  chiffre prend la valeur table.substr(reste,1)
  afficher "rang " rang "chiffre " chiffre
rang = rang + 1
E = Q
Q = quotient de (Q/16)
reste = E - (Q*16)
fin tant que

fin prog

Posté par
starwars
re : algorithme 30-11-14 à 15:14

voila mon algorithme sur algobox :
mais ca ne marche toujours pas ai je fait une erreur quelque part ?

algorithme

algorithme

Posté par
Leile
re : algorithme 30-11-14 à 15:21

chiffre est du type chaine..

tant que e!=0(e en minuscule)

et a la fin de la boucle, tu affiches reste..
c'est plutot
afficher "rang " i
afficher "chiffre " chiffre
non ?

tu dis ca que ne marche pas : ca plante, ou ca sort n'importe quoi ?

Posté par
starwars
re : algorithme 30-11-14 à 15:31

Je viens de corriger toutes mes erreurs et ça plante ca marque :
***L'algorithme contient une erreur : impossible de le lancer***
***Vérifiez la syntaxe des affectations et des conditions***

Posté par
Labo
re : algorithme base 10 a base 16 30-11-14 à 15:34

en effectuant les remarques indiquées
Tu obtiens avec E=3845  ceci
res=5
res =0
res =15
  3845=15*16^2+0*16^1+5
soit écrit en base 16
(F05)16

*** message déplacé ***

Posté par
starwars
re : algorithme base 10 a base 16 30-11-14 à 15:40

Labo, peux tu m'écrire l'algorithme sur algobox ou bien en language naurel car je ne vois vraiment pas la...

*** message déplacé ***

Posté par
Leile
re : algorithme 30-11-14 à 15:46

si tu as bien mis chiffre est du type chaine, je ne vois pas d'autre erreur de syntaxe ou d'affectation,
mais encore une fois, je ne suis pas une pro d'algobox..

ah oui :
table prend la valeur "0123456789ABCDEF"  entre quote..


je dois m'absenter pour l'instant : je reviens tout a l'heure.

Posté par
Labo
re : algorithme base 10 a base 16 30-11-14 à 15:57


tu  fais cela:
ligne à supprimer   i prend la valeur 1
OK ==>début de  tant que
( permute ces deux lignes pour avoir ceci )
res prend la valeur  Q%16
Q prend la valeur floor(Q/16)

*** message déplacé ***

Posté par
starwars
re : algorithme base 10 a base 16 30-11-14 à 16:01

d'accord mais cela ne me donnera pas le language de A à F...

*** message déplacé ***

Posté par
alb12
re : algorithme base 10 a base 16 30-11-14 à 16:01

Attention !

algorithme

algorithme

*** message déplacé ***

Posté par
alb12
re : algorithme 30-11-14 à 16:02

Attention !

(Lien cassé)

algorithme

Posté par
starwars
re : algorithme 30-11-14 à 16:02

Ca marche! mais le probleme est que c'est inversé par exemple si je veux 182 en base 16 je trouve 6B alors que c'est B6...

Posté par
Leile
re : algorithme 30-11-14 à 17:18

merci alb12 !

starwars, tu aurais pu me dire que tu avais fait un multi post..

et oui, on affiche d'abord le chiffre de rang 0 (les unités)
puis celui de rang 1 ,
puis celui de rang 2, c'est vrai..

cf. mon post de 13:38

c'est pour ça que je t'avais conseillé d'afficher le rang devant le chiffre.

Mais tu peux imaginer une autre façon d'afficher le résultat..
je te laisse faire.
Bon courage !

Posté par
starwars
re : algorithme 30-11-14 à 17:32

Je suis nouveau sur ce site, je ne savais qu'il était interdit de créer plusieurs topics. En tout cas, merci beaucoup Leile, tu m'as été d'une grande aide

Posté par
Leile
re : algorithme 30-11-14 à 17:53

Citation :
Je suis nouveau sur ce site
  ==> OK !
prends quelques minutes pour lire les consignes d'utilisation du site
(dans la rubrique : 'à lire avant de poster').

Bonne fin de soirée



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !