Exercice langage C : Fonction convertit un entier


Travail à Faire:

1.Ecrire une fonction de prototype  void conv(int) convertit un entier en base 2.

Cette fonction affiche les bits de l’entier n passé en argument.

2. Ecrire une fonction de prototype void conv(int n, int B) convertit un entier n en base

B. Cette fonction affiche  les chiffres  en base B de l’entier n passé en argument. La fonction doit fonctionner pour les bases 2 `a 16 au moins.


L’application directe de l’algorithme vu en cours a un petit défaut : les chiffres sont affichés  à l’envers. C¸ a n’est pas grave : l’´enonc´e ne demande pas de les affichés  l’endroit.

Résoudre ce problème en toute généralité nécessite d’utiliser un algorithme ine?cace ou des tableaux.

Ci-dessous, une combine pour afficher à  l’endroit en base 2.

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
#include
void conv2(int n){
while (n!=0){
printf("%i", n%2);
n=n/2;
}
printf("\n");
}
void convB(int n, int B){
int c; char affc;
while (n!=0){
c=n%B;
if (c<=9) affc=0+c; else affc=’A’+c-10;
printf("%c", affc);
n=n/B;
}
printf("\n");
}
void convAlendroit(int n){
int res, d;
res=0;
d=1;
while (n!=0){
res = res + n%2*d;
d=10*d;
n=n/2;
}
printf("%i", res);
printf("\n");
}
main(){
convB(255, 16);
}