bonjour j’avais deja posé cette question auparavant et je n’ai pas reçu de reponses, donc je retente je dois coder en c un code qui demande un caractere hexadecimal et donne un chiffre en décimal et je dois utiliser la notion de tableau et je dois faire en sorte que lorsqu’on demande un caractere hors de ABCDEF il affiche un message d’erreur ou si je met un espace ou une virgule il devrait afficher une erreur mais si je demande les lettres des hexadécimal en minuscule ca doit fonctionner
Pouvez vous m’aider svp
merci
Voici le début de mon code
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i,dec=0, j=0;
char hexa [i] ;
int lg = strlen(hexa);
printf("Introduisez un chiffre en hexadecimal; ");
scanf("%lg",&hexa);
for(i=0;i<lg;i++)
{
if (hexa[i]>='0' && hexa[i]<='9')
{
dec = dec+(hexa[i]-48)*pow(16,j);
j++;
}
else if (hexa[i]>= 'A'&& hexa[i] <='F')
{
dec = dec + (hexa[i]-55)*pow(16,j);
j++;
}
}
printf("Le nombre introduit %s en decimal est; %d",hexa,dec);
return 0;
}
Bonjour,
Voici un exemple simple qui demande un caractère hexadécimal et donne un chiffre en décimal et utiliser la notion de tableau.
#include <math.h>
#include <stdio.h>
#include <string.h>
int main()
{
char hex[32];
int decimal, i;
// utiliser pour stocker l index
int cnt;
// utiliser pour stocker le chiffre
int chiffre;
cnt = 0;
decimal = 0;
printf("Saisir un nombre hexadécimal :");
scanf("%s", hex);
// itération de la boucle en utilisant la longueur du nombre hexadécimal
for (i = (strlen(hex) - 1); i >= 0; i--) {
// utiliser switch case pour trouver le chiffre décimal équivalent
// pour chaque nombre hexa
switch (hex[i]) {
case 'A':
chiffre = 10;
break;
case 'B':
chiffre = 11;
break;
case 'C':
chiffre = 12;
break;
case 'D':
chiffre = 13;
break;
case 'E':
chiffre = 14;
break;
case 'F':
chiffre = 15;
break;
default:
printf("ERREUR!");
}
// calcul du nombre décimal
decimal = decimal + (chiffre)*pow((double)16, (double)cnt);
cnt++;
}
// afficher le nombre décimal
printf("Le nombre décimal est: %d", decimal);
return 0;
}