#include #include /? decimale( t,n) remplit le tableau de caracteres t en t[0], t[1], ... t[e?1] et renvoie e, tels que n= t 0?10ˆ0 + a 1?10ˆ1 + ... + a (e?1)?10ˆ(e?1)?/ int decimale( char t[10], int n); /? affiche sur une mˆeme ligne les k premiers caracteres du tableau t ?/ int imprime (char t[10], int k); /? hexadecimale( t,n) remplit le tableau de caracteres t en t[0], t[1], ... t[e?1] et renvoie e, tels que n= t 0?16ˆ0 + a 1?16ˆ1 + ... + a (e?1)?16ˆ(e?1)?/ int hexadecimale( char t[10], int n); int main (){ // insert code here... char ch[10]; int n,e; /? saisit un entier n et a?che sa representation d´ecimale t[0], t[1], t[e?1]?/ /? rang´ee dans le tableau t. On a ainsi n= t 0?10ˆ0 + a 1?10ˆ1 + ... + a (e?1)?10ˆ(e?1)?/ printf(” nombre\n”); scanf(”%d”,&n); e=decimale(ch,n); printf(”premier exposant e tel que 10ˆe> %d est %d\n”, n, e); printf(”repr´esentation d´ecimale de %d en a 0?10ˆ10 + a 1?10ˆ1 + ...\n”); imprime(ch,e); e=hexadecimale(ch,n); printf(”premier exposant e tel que 16ˆe> %d est %d\n”, n, e); printf(”repr´esentation hexad´ecimale de %d en a 0?16ˆ10 + a 1?16ˆ1 + ...\n”); imprime(ch,e); return EXIT SUCCESS; } /? decimale( t,n) remplit le tableau de caract`eres t en t[0], t[1], ... t[e?1] et renvoie e, tels que n= t 0?10ˆ0 + a 1?10ˆ1 + ... + a (e?1)?10ˆ(e?1)?/ int decimale( char t[10], int n) { /? On cherche le plus petit exposant e tel que puissance = 10ˆe> n?/ /? Dans ce cas on peut ´ecrire n= t 0?10ˆ0 + a 1?10ˆ1 + ... + a (e?1)?10ˆ(e?1) )?/ /? on ´ecrit les coee?cients a 0, ... , a (e?1) dans le tableau de caract`eres t[0], ..., t[e?1]?/ int exposant=0; int puissance=1; int j; int q = n; if ( n == 0 ) { t[0]=’0’; /? 0= 0?10ˆ0?/ return 1; /? 10ˆ0 = 1> 0?/ }else { /? on cherche puissance et exposant tels que puissance=10ˆexposant> n?/ while ( puissance<= n ) { puissance = puissance? 10; exposant = exposant + 1; }/? On ´ecrit les a j de la repr´esentation dans t (entre 0 et exposant?1) :?/ /? par exemple : 153 % 10 = 3 et 153 / 10 = 15 puis 15 % 10 = 5 et 15 /10 = 1 puis 1 % 10 = 1 et 1 / 10 = 0 ===> t= 3 5 1?/ for (j=0; j<exposant; j = j + 1) { t[j] = ’0’ + (q % 10); q=q/10; }return (exposant); } }int imprime (char t[10], int k){ int j; for (j=0; j<k; j = j + 1) { printf(”%c ”, t[j]); } printf(”\n”); return 0; /? valeur de retour `a ignorer?/ }/? hexadecimale( t,n) remplit le tableau de caract`eres t en t[0], t[1], ... t[e?1] et renvoie e, tels que n= t 0?16ˆ0 + a 1?16ˆ1 + ... + a (e?1)?16ˆ(e?1)?/ int hexadecimale( char t[10], int n) { /? On cherche le plus petit exposant e tel que puissance = 16ˆe> n?/ /? Dans ce cas on peut ´ecrire n= t 0?16ˆ0 + a 1?16ˆ1 + ... + a (e?1)?16ˆ(e?1) )?/ /? on ´ecrit les coee?cients a 0, ... , a (e?1) dans le tableau de caract`eres t[0], ..., t[e?1]?/ int exposant=0; int puissance=1; int j; char tab[16] =”0123456789ABCDEF” ; int q = n; if ( n == 0 ) { t[0]=’0’; /? 0= 0?16ˆ0?/ return 1; /? 16ˆ0 = 1> 0?/ }else { /? on cherche puissance et exposant tels que puissance=16ˆexposant> n?/ while ( puissance<= n ) { puissance = puissance? 16; exposant = exposant + 1; }/? On ´ecrit les a j de la repr´esentation dans t (entre 0 et exposant?1) :?/ for (j=0; j<exposant; j = j + 1) { t[j] = tab[q % 16]; q=q/16; }return (exposant); } } //nombre //3081 //premier exposant e tel que 10ˆe> 3081 est 4 //repr´esentation d´ecimale de 0 en a 0?10ˆ10 + a 1?10ˆ1 + ... //1 8 0 3 //premier exposant e tel que 16ˆe> 3081 est 3 //repr´esentation hexad´ecimale de 0 en a 0?16ˆ10 + a 1?16ˆ1 + ... //9 0 C
Pages: 1 2