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

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