Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- float laspeyres(int mode, float *p1, float *q1, float *p0, float *q0, int nbVal);
- float paasche(int mode, float *p1, float *q1, float *p0, float *q0, int nbVal);
- int main(int argc, char const *argv[])
- {
- int chx = 1, nbVal = 0, nbTab = 0, i = 0;
- float* p0 = NULL;
- float* q0 = NULL;
- float* p1 = NULL;
- float* q1 = NULL;
- float indice = 0;
- printf("\n================ Calcul d'Indices ================\n");
- while(chx)
- {
- 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");
- scanf("%d", &chx);
- if(chx == 0) exit(0);
- printf("\nNb de biens ?\n");
- scanf("%d", &nbVal);
- p0 = malloc(nbVal*sizeof(float));
- q0 = malloc(nbVal*sizeof(float));
- p1 = malloc(nbVal*sizeof(float));
- q1 = malloc(nbVal*sizeof(float));
- if (p0 == NULL || q0 == NULL || p1 == NULL || q1 == NULL) // Si l'allocation a �chou�
- {
- printf("Bad allocation\n");
- exit(0);
- }
- i = 0;
- nbTab = 0;
- while(i < nbVal)
- {
- printf("Prix %d du tableau %d ?\n", i+1, nbTab);
- if(nbTab == 0) scanf("%f", &p0[i]);
- else scanf("%f", &p1[i]);
- printf("Quantit� ?\n");
- if(nbTab == 0) scanf("%f", &q0[i]);
- else scanf("%f", &q1[i]);
- i++;
- if(i == nbVal && nbTab == 0)
- {
- i = 0;
- nbTab++;
- printf("\n");
- }
- }
- printf("\nTableau 0 :\nP: ");
- for(i = 0; i < nbVal; i++) printf("%f ", p0[i]);
- printf("\nQ: ");
- for(i = 0; i < nbVal; i++) printf("%f ", q0[i]);
- printf("\n\nTableau 1 :\nP: ");
- for(i = 0; i < nbVal; i++) printf("%f ", p1[i]);
- printf("\nQ: ");
- for(i = 0; i < nbVal; i++) printf("%f ", q1[i]);
- switch(chx)
- {
- case 1: indice = laspeyres(0, p1, q1, p0, q0, nbVal); break;
- case 2: indice = laspeyres(1, p1, q1, p0, q0, nbVal); break;
- case 3: indice = paasche(0, p1, q1, p0, q0, nbVal); break;
- case 4: indice = paasche(1, p1, q1, p0, q0, nbVal); break;
- default: break;
- }
- printf("\nIndice : %f\n", indice);
- free(p1);
- free(q1);
- free(p0);
- free(q0);
- }
- return 0;
- }
- float laspeyres(int mode, float *p1, float *q1, float *p0, float *q0, int nbVal)
- {
- int i;
- float indice = 0, num = 0, den = 0;
- if(mode == 0)
- {
- for(i = 0; i < nbVal; i++)
- {
- num += p1[i]*q0[i];
- den += p0[i]*q0[i];
- }
- }
- else
- {
- for(i = 0; i < nbVal; i++)
- {
- num += (p1[i]/p0[i])*q0[i];
- den += q0[i];
- }
- }
- indice = (num/den)*100;
- return indice;
- }
- float paasche(int mode, float *p1, float *q1, float *p0, float *q0, int nbVal)
- {
- int i;
- float indice = 0, num = 0, den = 0;
- if(mode == 0)
- {
- for(i = 0; i < nbVal; i++)
- {
- num += p1[i]*q1[i];
- den += p0[i]*q1[i];
- }
- }
- else
- {
- for(i = 0; i < nbVal; i++)
- {
- num += (p1[i]/p0[i])*q1[i];
- den += q1[i];
- }
- }
- indice = (num/den)*100;
- return indice;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement