Exercice langage C corrigé plusieurs fonctions

#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

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *