> Tous les forums > Forum Autres langages
 problème ordre de lecture
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Olocotrain
  Posté le 09/04/2008 @ 11:07 
Aller en bas de la page 
Petit astucien

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.

Publicité
fennec.
 Posté le 09/04/2008 à 13:22 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

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

koala01
 Posté le 19/05/2008 à 12:00 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

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]

djmoa
 Posté le 20/05/2008 à 13:22 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Nouvel astucien
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 ...
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
9,99 €Adaptateur Bluetooth USB TP-Link UB400 à 9,99 €
Valable jusqu'au 13 Avril

Amazon fait une promotion sur l'adaptateur Bluetooth USB TP-Link UB400 qui passe à 9,99 €. Cet adaptateur à brancher sur un port USB va vous permettre d'ajouter le bluetooth à votre ordinateur et d'utiliser ensuite sans fil vos périphériques bluetooth : souris, clavier, casque, manette, téléphone, ...


> Voir l'offre
249,99 €Ecran PC LED 28 pouces Samsung U28E590 (4K UHD, 1 ms, Freesync) à 249,99 €
Valable jusqu'au 14 Avril

Boulanger fait une promotion sur l'écran PC LED 28 pouces Samsung U28E570DS qui passe à 249,99 € au lieu de 299 €. Cet écran au format 16/9 offre une dalle 4K (résolution 3840x2160) avec un temps de réponse de 1 ms. Il est compatible FreeSync. Une très bonne affaire ! La livraison est également offerte.


> Voir l'offre
69,99 €Ecran Acer 21,5 pouces LED Full HD à 69,99 €
Valable jusqu'au 13 Avril

Cdiscount fait une promotion sur l'écran Acer K222HQLbd qui passe à 69,99 € alors qu'on le trouve ailleurs à partir de 90 €. Cet écran possède une diagonale de 21,5 pouces, est Full HD (1920x1080) et dispose d'une entrée VGA et d'une entrée DVI.


> Voir l'offre

Sujets relatifs
Problème d'installation sur Visual Studio
conseil de lecture !
Problème avec WinPython - Spyder
C Problème pointeur et passage en référence.
problème macro excel
Problème avec les espaces C++
Problème pour un batch urgent, veuillez lire svp
problème avec un parametre de requete preparée MVC
Problème de gestion dynamique de JCheckbox
Problème Access avec 2 inner join
Plus de sujets relatifs à problème ordre de lecture
 > Tous les forums > Forum Autres langages