home *** CD-ROM | disk | FTP | other *** search
- /*********************************************************************
- * CH06_04.C Fonctions: *
- * Comparaison de vitesses d'exΘcution: *
- * passage par valeur et passage par pointeur *
- *********************************************************************/
-
- #include<stdio.h>
- #include<time.h>
-
- void LitInt( int*);
- double Combin_Val( int, int);
- void Combin_Ptr( int, int, double*);
-
- main( void)
- {
- double cnm0, somme0= 0, somme1= 0;
- int i, j, k= 100, d= 800;
-
- clock_t debut, fin;
- /* type de donnΘe utilisΘ par la fonction clock(),
- c'est un nombre de tops de l'horloge interne.
- la fonction clock() renvoie la durΘe d'exΘcution depuis
- le dΘbut du programme en cycles d'horloge.
- */
- if( ( debut= clock())== -1) printf("\n Mesure n░1 imposible");
-
- for( i= d; i>= k; i--)
- {
- j= i- k;
- somme0+= Combin_Val( i, j);
- }
- if( ( fin= clock())== -1) printf("\n Mesure n░2 imposible");
-
- printf("\n durΘe0: %f", (fin- debut)/ CLK_TCK);
- /* CLK_TCK est pour votre machine le nombre
- de tops d'horloge par seconde. */
-
- if( ( debut= clock())== -1) printf("\n Mesure n░3 imposible");
-
- for( i= d; i> k; i--)
- {
- j= i- k;
- Combin_Ptr( i, j, &cnm0);
- somme1+= cnm0;
- }
- if( ( fin= clock())== -1) printf("\n Mesure n░4 imposible");
-
- printf("\n durΘe1: %f", (fin- debut)/ CLK_TCK);
- }
-
- double Combin_Val( int n, int m)
- {
- double cnm = 1;
- int i, f;
-
-
- if ( m* 2 > n) m= n- m;
- for (i= 1 ; i <= m; n--, i++)
- {
- if ((f= n) % i == 0)
- f /= i;
- else cnm /= i;
- cnm *= f;
- }
- return cnm;
- }
-
- void Combin_Ptr( int p, int q, double *c)
- {
- double cnm = 1;
- int i, f;
-
-
- if ( q* 2 > p) q= p- q;
- for (i= 1 ; i <= q; p--, i++)
- {
- if ((f= p) % i == 0)
- f /= i;
- else cnm /= i;
- cnm *= f;
- }
- *c= cnm;
- }
-