home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 17 / CD_ASCQ_17_101194.iso / dos / prg / alb_c10 / chap_06 / ch06_04.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-09-26  |  2.1 KB  |  84 lines

  1. /*********************************************************************
  2. *  CH06_04.C                                             Fonctions:  * 
  3. *                    Comparaison de vitesses d'exΘcution:  *
  4. *             passage par valeur et passage par pointeur  *
  5. *********************************************************************/
  6.  
  7. #include<stdio.h>
  8. #include<time.h>
  9.  
  10. void LitInt( int*);
  11. double Combin_Val( int, int);
  12. void Combin_Ptr( int, int, double*);
  13.  
  14. main( void)
  15. {
  16.     double cnm0, somme0= 0, somme1= 0;
  17.     int i, j, k= 100, d= 800;
  18.  
  19.     clock_t debut, fin;
  20.     /* type de donnΘe utilisΘ par la fonction clock(),
  21.        c'est un nombre de tops de l'horloge interne.
  22.        la fonction clock() renvoie la durΘe d'exΘcution depuis
  23.        le dΘbut du programme en cycles d'horloge.
  24.                                                                     */
  25.     if( ( debut= clock())== -1) printf("\n Mesure n░1 imposible");
  26.  
  27.         for( i= d; i>= k; i--)
  28.           {
  29.              j= i- k;
  30.          somme0+= Combin_Val( i, j);
  31.       }
  32.     if( ( fin= clock())== -1) printf("\n Mesure n░2 imposible");
  33.  
  34.     printf("\n durΘe0: %f", (fin- debut)/ CLK_TCK);      
  35.     /* CLK_TCK est pour votre machine le nombre
  36.        de tops d'horloge par seconde.                           */
  37.  
  38.     if( ( debut= clock())== -1) printf("\n Mesure n░3 imposible");
  39.  
  40.         for( i= d; i> k; i--)
  41.           {
  42.              j= i- k;
  43.          Combin_Ptr( i, j, &cnm0);
  44.          somme1+= cnm0;
  45.       }
  46.     if( ( fin= clock())== -1) printf("\n Mesure n░4 imposible");
  47.  
  48.     printf("\n durΘe1: %f", (fin- debut)/ CLK_TCK);
  49. }
  50.  
  51. double Combin_Val( int n, int m) 
  52. {
  53.     double cnm = 1;
  54.     int i, f;
  55.  
  56.  
  57.     if ( m* 2 > n) m= n- m;
  58.           for (i= 1 ; i <= m; n--, i++)
  59.             {
  60.             if ((f= n) % i == 0)
  61.                   f   /= i;
  62.         else  cnm /= i;
  63.         cnm *= f;
  64.      }
  65.     return cnm;
  66. }
  67.  
  68. void Combin_Ptr( int p, int q, double *c)  
  69. {
  70.     double cnm = 1;
  71.     int i, f;
  72.  
  73.  
  74.     if ( q* 2 > p) q= p- q;
  75.           for (i= 1 ; i <= q; p--, i++)
  76.             {
  77.             if ((f= p) % i == 0)
  78.                   f   /= i;
  79.         else  cnm /= i;
  80.         cnm *= f;
  81.      }
  82.     *c= cnm;
  83. }
  84.