> Tous les forumsAutres langages

 problème ordre de lecture
Statut du sujet : NON RESOLU Imprimer
 Olocotrain
  Posté le 09/04/2008 @ 11:07  
 Petit astucien

100 Messages

Bonjour,

je bloque concernant l'ordre de lecture d'une entrée au clavier.

Par exemple,
pour un programme convertissant une valeur hexa en décimal,j'aimerais obtenir:
entrée:"2C4" sortie:"708"

Si on commencait par taper 4,puis C,puis 2,ça serait facile: puissance 0,puis 1 puis 2.
Mais dans l'autre sens,comment faire puisqu'on ne sait pas à priori la valeur de la puissance de 16
pour "2" dans cet exemple?

Merci de vos suggestions au débutant(en programmation et en C) que je suis.

 Afficher le profil de OlocotrainEnvoyer un message privé à Olocotrain
 
 
Publicité
 fennec.  Posté le 09/04/2008 à 13:22  
Petit astucien

183 Messages

Bonjour

si je me souvien bien, il n'y a pas de string dans le langage C

tu doit introduire dans char[]

une fois que ton utilisateur a entré son nombre en hexa

tu peus accéder a la case de ton choix

tu traite en premier lieu char[3]

ensuite char[2]

je suis vraiment plus sur sa fait longtem que je n'ai plus fait de C

Afficher le profil de fennec.Envoyer un message privé à fennec.
 Revenir en haut de la page
 koala01  Posté le 19/05/2008 à 12:00  
Astucien

4715 Messages

Salut,

Si tu ne peux pas traiter les valeurs dans l'ordre dans lequelles elles arrivent, traite les dans l'ordre inverse de leur arrivée [clindoeil]

En effet, il n'existe pas de type chaine de caractères en C, et tu dois donc passer par l'utilisation d'un tableau de caractères, en prenant en compte qu'une chaine de caractères est considérée comme finie lorsque l'on rencontre le caractère '\0'

Ainsi, ce n'est pas un char str[3]; que tu dois utiliser si tu veux que l'utilisateur puisse introduire 2C6, mais bel et bien un char[4](3 caractères utiles + 1 pour le '\0'), et il faut t'assurer d'utiliser des fonctions qui soient en mesure d'éviter un maximum de problèmes lors de l'introduction par l'utilisateur (évite par exemple comme la peste la fonction scanf, pourtant si souvent utilisée en cours ou dans les tutos, qui est capable de provoquer des catastrophes si elle est mal utilisée... ce qui est souvent le cas [langue])

De plus, comme - a priori - l'utilisateur peut introduire un nombre "quelconque" de caractères (1A2B3C4D5E6F798 est tout à fait susceptible de représenter une valeur hexadécimale [clindoeil]), tu dois veiller à utiliser un tableau de caractères "suffisemment grand" pour contenir l'ensemble des caractères tout en restant d'une "taille raisonnable" (pas besoin de prévoir 36000 caractères si tu sais que l'utilisateur n'en introduira que 20 au maximum [clindoeil])

l'idée sera alors de parcourir une première fois la chaine "dans l'ordre normal" pour rechercher la position '\0' terminal (ou d'utiliser la fonction strlen qui le fait à ta place [clindoeil]), puis de parcourir la chaine "en sens inverse" pour évaluer les valeurs réelles.

Si, *vraiment* tu veux t'amuser, tu peux aussi profiter du parcours dans l'ordre normal de la chaine pour placer chaque caractère dans une pile, puis t'amuser à les "dépiler" correctement lors de l'évaluation réelle... mais l'idée n'a aucun intérêt autre que celui de t'habituer à la gestion d'une structure dynamique particulière [clindoeil][langue]

Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
 djmoa  Posté le 20/05/2008 à 13:22  
Petit astucien

4 Messages
il me semble que si tu rentres 0x2C4, et que tu dis que c est un nombre, il le captera comme etant hexa. tu n aura cas dire que tu le veux en decimal quqand tu fera un printf, fprintf ...
Afficher le profil de djmoaEnvoyer un message privé à djmoa
 Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Les sujets pertinents liés
Probleme de lancement d 'exe dans un .bat
Lancement de plusieurs processus
Parsing d'un fichier[Langage C]
macro en excel2000
Lecture fichier UNIX sous matlab PC
Problème d'ouverture d'excel dans VB6
initialisation de variables inopérante
pb avec la JMF et les RTPConnector
Programme langage c à adapter Borland C++
Script WSH de modification d'un fichier texte
Généalogique multimédia sur DVD ou Blu-Ray
Recupérer le nom de l'ordinateur/utilisateur !!!
Probleme deSetup
aide pour fichier .bat
programation et upnp
hibernate erreur:ORA-01000: maximum open cursors e
problème d'appel à paint pour Tetravex!
 
Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !



 > Tous les forumsAutres langages

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page
Comme PC Astuces, mettez-vous au vert avec Ikoula !
Faites le choix d'un hébergeur acteur de l'environnement !