Conversion nombre décimal négatif
Bonjour à tous je suis en train de coder une fonction qui retourne une chaine de caractère en fonction d'un int passé en paramètres et de la base souhaitée.
Voici le prototype
Code:
1 2
| int
intStr(char s[],const int tailletab,const int n, const int b) |
Ma fonction fonctionne très bien pour les nombres positif, mon problème est pour les nombres négatif autre décimal, je ne trouves pas sur internet une méthode pour faire cette conversion :? Si l'un d'entre vous a un lien ou quelque chose, je suis preneur. merci :lol:
Voici ma fonction
Code:
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
| int
intStr(char s[],const int tailletab,const int n, const int b)
//convertit n en un string en fonction de la base (b)
{
int i = 0, signe = n, iMax = 1, chifre;
//partie binaire décimal et hexadécimal
if(b == 2 || b == 10 || b == 16)
{
if(n < 0) // rend le nombre positif si il est négatif
{
signe = - signe;
if(b == 10)
iMax = 2;
}
do
/*copie dans le tableau en a l'envers
Exemple: si le nombre est -123 le tableau sera 321-.*/
{
chifre = signe % b;
if(chifre > 9)
{
switch(chifre)
{
case(10): s[i++] = 'A'; break;
case(11): s[i++] = 'B'; break;
case(12): s[i++] = 'C'; break;
case(13): s[i++] = 'D'; break;
case(14): s[i++] = 'E'; break;
case(15): s[i++] = 'F'; break;
}
}
else
s[i++] = chifre + '0';
}
while((signe /= b) > 0 && i < tailletab - iMax);
if(i >= tailletab - iMax && signe != 0)// si le tableau est trop petit
return 0;
//gere les nombres négatif
if(n < 0 && b == 10)
s[i++] = '-';
else if(n < 0 && b == 2)
while((!(i > 32)) && i < (tailletab /4) * 4)
s[i++] = '1';
else if(n < 0 && b == 16)
while((!(i > 8)) && i < tailletab -2)
s[i++] = 'F';
s[i] = '\0';// signe de fin de chaine
inverser(s);
return 1;
}
else
return 0;
} |
Je suis amateur en programmation donc pas trop de mots technique svp si vous remarquez des erreurs :oops:
Merci:lol: