home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 17 / CD_ASCQ_17_101194.iso / dos / prg / alb_c10 / chap_13 / ch13_04.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-09-08  |  1.4 KB  |  61 lines

  1. /*********************************************************************
  2. *  CH13_04.C               Conversion d'un entier non signΘ en binaire *
  3. *           Exercice d'aprΦs un programme de William J-M MARIE *
  4. *********************************************************************/
  5.  
  6. #include<stdio.h>
  7. #include<string.h>
  8.  
  9. #define n (8* sizeof( int))
  10.  
  11. void LitU( unsigned int*);
  12. void convbin_n( unsigned int, char*);
  13.  
  14. main(void)
  15. {
  16.       unsigned int valeur;
  17.       char strbin[ n+ 1];
  18.  
  19.       printf(" **** Conversion:  unsigned int => binaire ****\t\t"
  20.      "( 0 pour sortir)\n");
  21.  
  22.       while(1)
  23.       {
  24.            printf("\n Entrez un entier non signΘ ( de 1 α 65535) :  ");
  25.        LitU( &valeur);
  26.  
  27.        if( valeur== 0) break;
  28.  
  29.            convbin_n( valeur, strbin);
  30.            printf(" Conversion:   DΘcimal = %u =>  Binaire = %s\n",
  31.        valeur, strbin);
  32.       }
  33. }
  34.  
  35. void convbin_n( unsigned int nombre, char* bin)
  36. {
  37.       int i;
  38.       unsigned int valeur;
  39.  
  40.     for( i= n- 1, valeur= 1; i>= 0; i--, valeur<<= 1)
  41.            if( ( nombre & valeur)== valeur)
  42.                 bin[i] = '1';
  43.            else
  44.                 bin[i] = '0';
  45.       bin[n] = '\0';
  46. }
  47.  
  48. void LitU( unsigned int* entierU)
  49. {
  50.     double dble;
  51.     do
  52.         {
  53.        while( scanf("%lf", &dble)!= 1)
  54.         while( getchar() != '\n');
  55.        while( getchar() != '\n');
  56.     }
  57.     while( dble< 0.0 || dble> 65535.0);
  58.         *entierU= ( unsigned int) dble;
  59. }
  60.  
  61.