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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
| #include <stdio.h>
#include <stdlib.h> /* pour system (); */
void clean_stdin (void);
void clear_screen (void);
void pause (void);
int menu (void);
int bin2dec(char*);
void dec2bin (int, char*, int);
int main (void) /* void quand main ne prend pas de paramètres */
{
char buf[256];
int nb = 0;
int caractere = 0;
char binaire = 0;
clear_screen ();
switch (menu())
{
case 1 :
printf("Choisissez un nombre decimal pour le convertir en binaire?\n\n");
scanf("%d", &nb);
printf("\n");
dec2bin(nb, buf, 8);
printf("%s\n\n", buf);
break;
case 2:
printf("Choisissez un nombre binaire pour le convertir en decimal?\n\n");
scanf("%d", &nb);
printf("\n");
binaire = bin2dec(nb);
printf("%d\n\n", binaire);
break;
}
clean_stdin ();
pause ();
return 0; /* à ne pas oublier */
}
void clean_stdin (void) /* procédure pour vider la mémoire tampon du clavier (issue de la FAQ) */
{
int c;
do {
c = getchar();
} while (c != '\n' && c != EOF);
}
void clear_screen (void)
{
system ("cls"); /* pas portable mais au moins, on n'a qu'une seule ligne à modifier */
/* clear pour Linux */
}
void pause (void)
{
printf ("\nAppuyez sur Entrer pour continuer ...\n");
getchar ();
/* getchar (); ne prend pas de paramètres, pour affecter à une variable, on fait comme ceci :
var = getchar (); */
}
int bin2dec(char *bin)
{
int dec = 0;
while(*bin)
{
dec = (2 * dec) + (*bin - '0');
bin++;
}
return dec;
}
void dec2bin (int dec, char *bin, int size)
{
int reste = 1, i;
/* memset(bin, '0', size); fonction inéxistante */
for(i = (size-1); reste != 0; i--)
{
reste = dec / 2;
*(bin+i) = (dec % 2) + '0';
dec = reste;
}
*(bin+(size)) = '\0';
/* pas de return dans une procédure ... */
}
int menu (void) /* void quand la fonction ne prend pas de paramètres (sinon elle peut prendre une infinité de paramètres) */
{
int choix = 0;
while (choix <1 || choix > 6)
{
printf("-== Menu ==-\n\n");
printf("1 : Decimal --> Binaire\n");
printf("2 : Binaire --> Decimal\n");
printf("3 : Decimal --> Hexadecimal\n");
printf("4 : Hexadecimal --> Decimal\n");
printf("5 : Binaire --> Hexadecimal\n");
printf("6 : Hexadecimal --> Binaire\n\n");
printf("Votre choix ?");
scanf("%d", &choix);
clean_stdin ();
pause ();
}
return choix;
} |
Partager