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

  1. /*********************************************************************
  2. *  CH11_06.C                          Tableaux dans une structure  *
  3. *             Statistiques liΘes α une sΘrie Sn de n valeurs Xi  *
  4. *                α chacune desquelles est associΘe une frΘquence fi  *
  5. *         moyenne, variance et Θcart-type pour Sn= { Xi, fi}  *
  6. *********************************************************************/
  7.  
  8. #include<stdio.h>
  9. #include<math.h>
  10.  
  11. #define dim 20
  12.  
  13. struct statcouple
  14. {
  15.     int n;                         /*  n: nombre de couples    */
  16.     double x[dim], f[dim],
  17.            sumx, sumf, sumxf, sumx_2f,
  18.        ex, ex_2,                    /* espΘrances mathΘmatiques */
  19.        varx, sdx,                   /* variance et Θcart-type   */
  20.        varcx, sdcx;                 /* valeurs corrigΘes        */
  21. };
  22.  
  23. void LitInt( int*);
  24. void LitDble( double*);
  25. void LitStat( struct statcouple*);
  26. void EcritStat( struct statcouple*);
  27.  
  28. main( void)
  29. {
  30.     struct statcouple s;
  31.  
  32.     LitStat( &s);
  33.     EcritStat( &s);
  34. }
  35.  
  36. void LitStat( struct statcouple *s0)
  37. {
  38.         int i;
  39.  
  40.     printf("\n Entrez le nombre de couples de la sΘrie:  ");
  41.     do
  42.     {
  43.        LitInt( &s0->n);
  44.     }
  45.     while( s0->n< 2 || s0->n> dim);
  46.  
  47.     for( i= 0; i< s0->n; i++)
  48.     {
  49.            printf("\n Entrez le couple n░ %d\t x:  ", i+ 1); 
  50.        LitDble( &s0->x[i]);
  51.        printf("\t\t\t f:  ");
  52.        LitDble( &s0->f[i]);
  53.  
  54.        s0->sumx+= s0->x[i];
  55.        s0->sumf+= s0->f[i];
  56.        s0->sumxf+= ( s0->x[i]* s0->f[i]);
  57.        s0->sumx_2f+= ( s0->x[i]* s0->x[i]* s0->f[i]);
  58.         }
  59.  
  60.     s0->ex= s0->sumxf/ s0->sumf;
  61.     s0->ex_2= s0->sumx_2f/ s0->sumf;
  62.     s0->varx= s0->ex_2- s0->ex* s0->ex;
  63.     s0->sdx= sqrt( s0->varx);
  64.     s0->varcx= s0->varx* ( 1.0* s0->n/ ( s0->n- 1) );
  65.     s0->sdcx= sqrt( s0->varcx);
  66. }
  67.  
  68. void EcritStat( struct statcouple *s1)
  69. {
  70.     printf("\n nombre de couples: %d"
  71.            "\n Somme( Xi)= %.2lf , Somme( fi)= %.2lf"
  72.            "\n Somme( Xi.fi)= %.2lf , Somme( Xi▓.fi)= %.2lf"
  73.            "\n E( X)= %.2lf , E( X▓)= %.2lf"
  74.            "\n Variance( X)= %.2lf , Ecart-type( X)= %.2lf"
  75.            "\n Var corrigΘe( X)= %.2lf , Ecart-type corrigΘ( X)= %.2lf",
  76.         s1->n, s1->sumx, s1->sumf, s1->sumxf, s1->sumx_2f,
  77.         s1->ex, s1->ex_2, s1->varx, s1->sdx,
  78.         s1->varcx, s1->sdcx);
  79.  
  80. }
  81.  
  82. void LitInt( int *entier)
  83. {
  84.     double dble;
  85.     do
  86.         {
  87.        while( scanf("%lf", &dble)!= 1)
  88.         while( getchar() != '\n');
  89.        while( getchar() != '\n');
  90.     }
  91.     while( dble< -32768.0 || dble> 32767.0);
  92.         *entier= (int) dble;
  93. }
  94.  
  95. void LitDble( double *reel)
  96. {
  97.     while( scanf("%lf", reel)!= 1)
  98.         while( getchar() != '\n');
  99.     while( getchar() != '\n');
  100. }
  101.  
  102. /*
  103.  Entrez le nombre de couples de la sΘrie:   5
  104.  Entrez le couple n░ 1:     x: 61
  105.              f: 50
  106.  Entrez le couple n░ 1:     x: 64
  107.              f: 180
  108.  Entrez le couple n░ 1:     x: 67
  109.              f: 420
  110.  Entrez le couple n░ 1:     x: 70
  111.              f: 270
  112.  Entrez le couple n░ 1:     x: 73
  113.              f: 80
  114.  nombre de couples: 5
  115.  Somme( Xi)= 335.00 , Somme( fi)= 1000.00
  116.  Somme( Xi.fi)= 67450.00 , Somme( Xi▓.fi)= 4558030.00
  117.  E( X)= 67.45 , E( X▓)= 4558.03
  118.  Variance( X)= 8.53 , Ecart-type( X)= 2.92
  119.  Var corrigΘe( X)= 10.66 , Ecart-type corrigΘ( X)= 3.26
  120. */