Salut les programmateurs C,
Je suis un débutant (pas complètement je connais python un peu), je poste car je désire prendre contacte avec la communauté C de ce site de forums génial et parce-que j'en ai marre depuis environ une semaine de me trouver seule livré contre mon ordinateur.
J'apprends le C89 et j'essaie d'écrire un programme ou l'on entre un octet sous notation majuscule hexadécimale et qui est censer renvoyer la valeur en entier convertie.
et je ne comprend pas pourquoi celui-çi ne marche pas ou presque pas (sûrement du aux conversions de types):
un caractère hexadécimal est correctement convertie en int mais pas deux et pas les chiffres, car le programme n'entre pas dans la structure conditionnelle destiner a traiter ceux-ci.
Voici le code barbare de mon déboirs:
PS: je poste pour apprendre et pas résoudre le problème: pas la peine de faxer la réponse, des bons conseils serai la bienvenue:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 #include <stdio.h> #include <string.h> enum {A=10,B,C,D,E,F} /*contantes d'égalité de caractères hexdécimal a valeurs digitale */ main() { char entry[2] ; int i =0 ; int res=0 ; gets(entry) ; /* Entrez un charactère [A-B] sa fonctionne mais pas deux nie les chiffres */ while ( i < strlen(entry) ) { if (i == 0) { if (( (int) entry[i]) >= 10) { if (((int) entry[i]) == 'A') { res=A ; } else if (((int) entry[i]) == 'B') { res=B ; } else if (((int) entry[i]) == 'C') { res=C ; } else if (((int) entry[i]) == 'D') { res=D ; } else if (((int) entry[i]) == 'E') { res=E ; } else if (((int) entry[i]) == 'F') { res=F ; } } else { printf("never go in this block\n") ; /* le programme n'entre jamais dans ce block */ res=(int) entry[i] ; } res= res * 16 ; } else { if ( ((int) entry[i]) >= 10) { if (((int) entry[i]) == 'A') { res=A ; } else if (((int) entry[i]) == 'B') { res=B ; } else if (((int) entry[i]) == 'C') { res=C ; } else if (((int) entry[i]) == 'D') { res=D ; } else if (((int) entry[i]) == 'E') { res=E ; } else if (((int) entry[i]) == 'F') { res=F ; } } else { res=(int) entry[i] ; /* le programme n'entre jamais dans ce block */ } res=res+res ; } i++ ; } printf("%d\n",res) ; }
le mieux serai que chacun fournisse une réponse didactiellement commenter a sa façon (sa version).
Et si vous pourriez écrire une fonction de traitement au lieu des structures conditionnel ca serai sympa car je n'y arrive pas: j'aimerai apprendre.
Merci pour vos réponses éclairé.
Partager