Advertisement
xD3VHAX

Untitled

May 22nd, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.12 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. float laspeyres(int mode, float *p1, float *q1, float *p0, float *q0, int nbVal);
  5. float paasche(int mode, float *p1, float *q1, float *p0, float *q0, int nbVal);
  6.  
  7. int main(int argc, char const *argv[])
  8. {
  9.   int chx = 1, nbVal = 0, nbTab = 0, i = 0;
  10.   float* p0 = NULL;
  11.   float* q0 = NULL;
  12.   float* p1 = NULL;
  13.   float* q1 = NULL;
  14.   float indice = 0;
  15.   printf("\n================ Calcul d'Indices ================\n");
  16.  
  17.   while(chx)
  18.   {
  19.     printf("\nQuel indice voulez vous calculer ?\n\n 1- Laspeyres (indice des moy)\n 2- Laspeyres (moy des indices)\n 3- Paasche (indice des moy)\n 4- Paasche (moy des indices)\n 0- Quit\n");
  20.     scanf("%d", &chx);
  21.     if(chx == 0) exit(0);
  22.  
  23.     printf("\nNb de biens ?\n");
  24.     scanf("%d", &nbVal);
  25.     p0 = malloc(nbVal*sizeof(float));
  26.     q0 = malloc(nbVal*sizeof(float));
  27.     p1 = malloc(nbVal*sizeof(float));
  28.     q1 = malloc(nbVal*sizeof(float));
  29.     if (p0 == NULL || q0 == NULL || p1 == NULL || q1 == NULL) // Si l'allocation a �chou�
  30.     {
  31.       printf("Bad allocation\n");
  32.       exit(0);
  33.     }
  34.  
  35.     i = 0;
  36.     nbTab = 0;
  37.     while(i < nbVal)
  38.     {
  39.       printf("Prix %d du tableau %d ?\n", i+1, nbTab);
  40.       if(nbTab == 0) scanf("%f", &p0[i]);
  41.       else scanf("%f", &p1[i]);
  42.       printf("Quantit� ?\n");
  43.       if(nbTab == 0) scanf("%f", &q0[i]);
  44.       else scanf("%f", &q1[i]);
  45.  
  46.       i++;
  47.       if(i == nbVal && nbTab == 0)
  48.       {
  49.         i = 0;
  50.         nbTab++;
  51.         printf("\n");
  52.       }
  53.     }
  54.  
  55.     printf("\nTableau 0 :\nP: ");
  56.  
  57.  
  58.     for(i = 0; i < nbVal; i++) printf("%f  ", p0[i]);
  59.     printf("\nQ: ");
  60.     for(i = 0; i < nbVal; i++) printf("%f  ", q0[i]);
  61.     printf("\n\nTableau 1 :\nP: ");
  62.     for(i = 0; i < nbVal; i++) printf("%f  ", p1[i]);
  63.     printf("\nQ: ");
  64.     for(i = 0; i < nbVal; i++) printf("%f  ", q1[i]);
  65.  
  66.  
  67.     switch(chx)
  68.     {
  69.       case 1: indice = laspeyres(0, p1, q1, p0, q0, nbVal); break;
  70.       case 2: indice = laspeyres(1, p1, q1, p0, q0, nbVal); break;
  71.       case 3: indice = paasche(0, p1, q1, p0, q0, nbVal); break;
  72.       case 4: indice = paasche(1, p1, q1, p0, q0, nbVal); break;
  73.       default: break;
  74.     }
  75.     printf("\nIndice : %f\n", indice);
  76.     free(p1);
  77.     free(q1);
  78.     free(p0);
  79.     free(q0);
  80.   }
  81.  
  82.   return 0;
  83. }
  84.  
  85. float laspeyres(int mode, float *p1, float *q1, float *p0, float *q0, int nbVal)
  86. {
  87.   int i;
  88.   float indice = 0, num = 0, den = 0;
  89.   if(mode == 0)
  90.   {
  91.     for(i = 0; i < nbVal; i++)
  92.     {
  93.       num += p1[i]*q0[i];
  94.       den += p0[i]*q0[i];
  95.     }
  96.   }
  97.   else
  98.   {
  99.     for(i = 0; i < nbVal; i++)
  100.     {
  101.       num += (p1[i]/p0[i])*q0[i];
  102.       den += q0[i];
  103.     }
  104.   }
  105.   indice = (num/den)*100;
  106.   return indice;
  107. }
  108.  
  109. float paasche(int mode, float *p1, float *q1, float *p0, float *q0, int nbVal)
  110. {
  111.   int i;
  112.   float indice = 0, num = 0, den = 0;
  113.   if(mode == 0)
  114.   {
  115.     for(i = 0; i < nbVal; i++)
  116.     {
  117.       num += p1[i]*q1[i];
  118.       den += p0[i]*q1[i];
  119.     }
  120.   }
  121.   else
  122.   {
  123.     for(i = 0; i < nbVal; i++)
  124.     {
  125.       num += (p1[i]/p0[i])*q1[i];
  126.       den += q1[i];
  127.     }
  128.   }
  129.   indice = (num/den)*100;
  130.   return indice;
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement