convertiseur hexadecimal en c

Ceci est le forum lié aux connaissances : les sciences, la littérature, ... mais aussi tout ce qui est en rapport avec la scolarité.

Modérateur : τ

Avatar de l’utilisateur
moquette
Pen Spinner
Messages : 56
Inscription : mar. 24 mars 2009 21:54

convertiseur hexadecimal en c

Message par moquette » lun. 26 oct. 2009 12:52

Je suis un dedutant en c et j'aimerai avoir de l' aide d' un éventuéle programateur
pour ce code..
MERCI
code: c
-------------------------------------------------------------------------------


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>


int main()
{
int i=0 , boucle=0 , choix_de_fin=0 , hd=0 , nbreseizaines=0 , nbreunite=0;

while (boucle==0)
{
printf("Bienvenue dans le convertisseur Hexadecimal \nQue voulez vous faire ?\n1.Hexadecimal-->Decimal\n2.Decimal-->Hexadecimal\n3.Quitter\n") ;
scanf ("%d", &i);

switch (i)
{
case 1:

break ;

case 2:

printf("quel nombre voulez vous convertir?");
scanf ("%d", &hd);

nbreseizaines= hd/16 ;

printf("nbreseizaines vaut %ld \n", nbreseizaines) ;

nbreunite= hd-(nbreseizaines*16) ;

printf("nbreunite vaut %ld \n%ld en decimal vaut %ld%ld en hexadecimal\n\n", nbreunite, hd, nbreseizaines, nbreunite) ;

break ;

case 3:
boucle++ ;
break ;

default :
printf("Vous n'avez pas entre un nombre correct\n");
boucle++ ;
break;
}

}

return 0;
}


/le programe n'est pas encor fini/
/je suis ouvert a toute aide /
Dernière modification par moquette le lun. 26 oct. 2009 15:19, modifié 1 fois.
[]
----(|\^_*_^/|)----
-------O---0-----
--------\/\/\/
je chérche un HSmx
------^ ^--------
--<<(0_°)>> ------
------ ¨ ¨------------
[]

Avatar de l’utilisateur
hexbinmos
Pen Spinner - 2 avertissements
Messages : 2310
Inscription : mer. 1 juil. 2009 19:48

Re: convertiseur hexadecimal en c

Message par hexbinmos » lun. 26 oct. 2009 18:45

tu peut t'aider de ça :D
http://easycalculation.com/hex-converter.php
et après j'ai une idée où tu peut remplacer avec la commande sed.

Code : Tout sélectionner

sed 's/motARemplacer/motQuOnRemplace/
Réalisme : Passé + Présent = Futur. Si ça n'est pas fait ou que ça n'a jamais été fait, alors ça ne sera jamais fait.
Utopisme : Les Réalistes de demain seraient utopistes d'aujourd'hui.

Avatar de l’utilisateur
Jean-Bob
Pen Spinner
Messages : 253
Inscription : sam. 11 oct. 2008 12:15
Contact :

Re: convertiseur hexadecimal en c

Message par Jean-Bob » lun. 26 oct. 2009 20:47

Alors le souci majeur de ton convertisseur décimal -> hexadécimal c'est qu'il ne peut pas convertir des entiers supérieurs à 16².
En effet, ce que tu fais c'est que tu prends un entier, tu effectues la division euclidienne de cet entier par 16, tu en déduis que le nombre des unités est le reste de cette division euclidienne et le nombre des "seizaines" le quotient. Or pour des entiers supérieurs à 16², le quotient est supérieur à 16 donc ce ne peut pas être un chiffre de la décomposition du nombre en base 16.
Ce que tu dois considérer c'est cette décomposition pour un entier n :

n = a0 * 16^0 + a1 * 16^1 + a2 * 16^2 + ... + ap * 16^p.

Que tu peux aussi écrire :

n = a0 + 16 * (a1 + 16 * (a2 + 16 * (... + 16 * ap)...)

Donc le reste de la division euclidienne de n par 16 va te donner a0 et le quotient va te donner a1 + 16 * (a2 + 16 * (... + 16 * ap)...).
Tu auras donc trouvé le premier chiffre de la décomposition en base 16 de n mais pour trouver les autres il faut effectuer des divisions euclidiennes successives sur le quotient.

Si tu as déjà entendu parler de la programmation récursive ce que je t'ai dit devrait te donner des idées, sinon il faudra faire une boucle while pour effectuer autant de divisions euclidiennes que nécessaire.

Au niveau du style je te conseille de stocker les chiffres de la décomposition en base 16 de ton entier dans un tableau pour y voir plus clair. Sinon si tu as par exemple 113 en hexadécimal tu ne pourras pas savoir si c'est 11 3, c'est-à-dire 179 en décimal, ou 1 13, c'est-à-dire 29 en décimal.

La conversion hexadécimal -> décimal se fait par contre beaucoup plus simplement.

Tu peux aussi essayer de faire un système de conversion entre la base décimale et une base b quelconque, voire entre deux bases quelconques b1 et b2.

Bonne chance.

EDIT : dernier conseil histoire de pinailler : enlève le boucle++ du cas default de ton switch afin que l'utilisateur puisse rentrer un nouveau nombre.
La vie d'une personne souffrant d'amnésie antérograde, c'est un processus de Markov.

Une suite de Cauchy veut aller à une soirée no limit. En arrivant devant le videur, celui-ci lui dit "Désolé, c'est complet".

Avatar de l’utilisateur
moquette
Pen Spinner
Messages : 56
Inscription : mar. 24 mars 2009 21:54

Re: convertiseur hexadecimal en c

Message par moquette » lun. 26 oct. 2009 22:38

Mérci Jean-Bob j' ai fai plin de progres d'un coup
(tu peu dévelopé in peu sur la programation récursive stp. :!:
Merci aussi cookieslover %x c'est vraiment + simple :P
[]
----(|\^_*_^/|)----
-------O---0-----
--------\/\/\/
je chérche un HSmx
------^ ^--------
--<<(0_°)>> ------
------ ¨ ¨------------
[]

KIRGO

Re: convertiseur hexadecimal en c

Message par KIRGO » lun. 26 oct. 2009 22:59

Ce topic aurait dû être posté dans le topic déjà prévu à cet effet, à savoir celui qui est juste au dessus du tiens désormais ;)

Je lock, si jamais tu as encore des questions à poser, pose-les dans le topic approprié, ou repost ton message initial, si tu en as encore besoin. Mercii

Bonne continuation.

KIRGO


Et on dit PROGRAMMEUR, pas PROGRAMMATEUR, ARG ><'

Verrouillé

Revenir à « Matière grise »