#include <stdio.h>
#include <stdlib.h>

int main()
{
    float CrDl [24] = {0}; /// Compagnie Régulière Destination Longue
    float NbVCrL [24] = {0}; /// Nombre de voyageurs Compagnie Régulières Destination Longue
    float CrDc [24] = {0}; /// Compagnie Régulière Destination Courte
    float NbVCrC [24] = {0}; /// Nombre de voyageurs Compagnie Régulières Destination Courte
    float ClDc [24] = {0}; /// Compagnie Low Cost Destination Courte
    float NbVCl [24] = {0}; /// Nombre de voyageurs Compagnie Low Cost Destination Courte
    float Maro [24] = {0}; /// Prix de la maroquinerie
    float NbMaro [24] = {0}; /// Quantité de maroquinerie
    float Pi1Qi0 [24] = {0}; /// Stockent les différents sous calculs des indices
    float Pi0Qi0 [24] = {0};
    float Pi0Qi1 [24] = {0};
    float Pi1Qi1 [24] = {0};
    float Qi1 [24] = {0};
    float Qi0 [24] = {0};
    float Pi1Pi0Qi0 [24] = {0};
    float Pi1Pi0Qi1 [24] = {0};
    float IML [24] = {0};
    float IMP [24] = {0};
    float MIL [24] = {0};
    float MIP [24] = {0};
    int i = 0;
    int n = 24;
    FILE* fCrDl = NULL; /// Fichiers dans lesquels sont les valeurs
    FILE* fNbVCrL = NULL;
    FILE* fCrDc = NULL;
    FILE* fNbVCrC = NULL;
    FILE* fClDc = NULL;
    FILE* fNbVCl = NULL;
    FILE* fMaro = NULL;
    FILE* fNbMaro = NULL;
    fCrDl = fopen("CrDl.txt", "r");
    fNbVCrL = fopen("NbVCrL.txt", "r");
    fCrDc = fopen("CrDc.txt", "r");
    fNbVCrC = fopen("NbVCrC.txt", "r");
    fClDc = fopen("ClDc.txt", "r");
    fNbVCl = fopen("NbVCl.txt", "r");
    fMaro = fopen("Maro.txt", "r");
    fNbMaro = fopen("NbMaro.txt", "r");

    if (fCrDl != NULL && fNbVCrL != NULL && fCrDc != NULL && fNbVCrC != NULL && fClDc != NULL && fNbVCl != NULL && fMaro != NULL && fNbMaro != NULL) /// On récupère les valeurs
    {
        fscanf(fCrDl, "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f", &CrDl [0], &CrDl [1], &CrDl [2], &CrDl [3], &CrDl [4], &CrDl [5], &CrDl [6], &CrDl [7], &CrDl [8], &CrDl [9], &CrDl [10], &CrDl [11], &CrDl [12], &CrDl [13], &CrDl [14], &CrDl [15], &CrDl [16], &CrDl [17], &CrDl [18], &CrDl [19], &CrDl [20], &CrDl [21], &CrDl [22], &CrDl [23]);

        fscanf(fNbVCrL, "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f", &NbVCrL [0], &NbVCrL [1], &NbVCrL [2], &NbVCrL [3], &NbVCrL [4], &NbVCrL [5], &NbVCrL [6], &NbVCrL [7], &NbVCrL [8], &NbVCrL [9], &NbVCrL [10], &NbVCrL [11], &NbVCrL [12], &NbVCrL [13], &NbVCrL [14], &NbVCrL [15], &NbVCrL [16], &NbVCrL [17], &NbVCrL [18], &NbVCrL [19], &NbVCrL [20], &NbVCrL [21], &NbVCrL [22], &NbVCrL [23]);

        fscanf(fCrDc, "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f", &CrDc [0], &CrDc [1], &CrDc [2], &CrDc [3], &CrDc [4], &CrDc [5], &CrDc [6], &CrDc [7], &CrDc [8], &CrDc [9], &CrDc [10], &CrDc [11], &CrDc [12], &CrDc [13], &CrDc [14], &CrDc [15], &CrDc [16], &CrDc [17], &CrDc [18], &CrDc [19], &CrDc [20], &CrDc [21], &CrDc [22], &CrDc [23]);

        fscanf(fNbVCrC, "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f", &NbVCrC [0], &NbVCrC [1], &NbVCrC [2], &NbVCrC [3], &NbVCrC [4], &NbVCrC [5], &NbVCrC [6], &NbVCrC [7], &NbVCrC [8], &NbVCrC [9], &NbVCrC [10], &NbVCrC [11], &NbVCrC [12], &NbVCrC [13], &NbVCrC [14], &NbVCrC [15], &NbVCrC [16], &NbVCrC [17], &NbVCrC [18], &NbVCrC [19], &NbVCrC [20], &NbVCrC [21], &NbVCrC [22], &NbVCrC [23]);

        fscanf(fClDc, "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f", &ClDc [0], &ClDc [1], &ClDc [2], &ClDc [3], &ClDc [4], &ClDc [5], &ClDc [6], &ClDc [7], &ClDc [8], &ClDc [9], &ClDc [10], &ClDc [11], &ClDc [12], &ClDc [13], &ClDc [14], &ClDc [15], &ClDc [16], &ClDc [17], &ClDc [18], &ClDc [19], &ClDc [20], &ClDc [21], &ClDc [22], &ClDc [23]);

        fscanf(fNbVCl, "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f", &NbVCl [0], &NbVCl [1], &NbVCl [2], &NbVCl [3], &NbVCl [4], &NbVCl [5], &NbVCl [6], &NbVCl [7], &NbVCl [8], &NbVCl [9], &NbVCl [10], &NbVCl [11], &NbVCl [12], &NbVCl [13], &NbVCl [14], &NbVCl [15], &NbVCl [16], &NbVCl [17], &NbVCl [18], &NbVCl [19], &NbVCl [20], &NbVCl [21], &NbVCl [22], &NbVCl [23]);

        fscanf(fMaro, "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f", &Maro [0], &Maro [1], &Maro [2], &Maro [3], &Maro [4], &Maro [5], &Maro [6], &Maro [7], &Maro [8], &Maro [9], &Maro [10], &Maro [11], &Maro [12], &Maro [13], &Maro [14], &Maro [15], &Maro [16], &Maro [17], &Maro [18], &Maro [19], &Maro [20], &Maro [21], &Maro [22], &Maro [23]);

        fscanf(fNbMaro, "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f", &NbMaro [0], &NbMaro [1], &NbMaro [2], &NbMaro [3], &NbMaro [4], &NbMaro [5], &NbMaro [6], &NbMaro [7], &NbMaro [8], &NbMaro [9], &NbMaro [10], &NbMaro [11], &NbMaro [12], &NbMaro [13], &NbMaro [14], &NbMaro [15], &NbMaro [16], &NbMaro [17], &NbMaro [18], &NbMaro [19], &NbMaro [20], &NbMaro [21], &NbMaro [22], &NbMaro [23]);
    }

    for (i = 0 ; i < n ; i = i + 1) /// On calcule les différentes parties des indices
    {
        Pi1Qi0 [i] = CrDl[i]*NbVCrL[0] + CrDc[i]*NbVCrC[0] + ClDc[i]*NbVCl[0] + Maro[i]*NbMaro[0];
        Pi0Qi0 [i] = CrDl[0]*NbVCrL[0] + CrDc[0]*NbVCrC[0] + ClDc[0]*NbVCl[0] + Maro[0]*NbMaro[0];
        Pi0Qi1 [i] = CrDl[0]*NbVCrL[i] + CrDc[0]*NbVCrC[i] + ClDc[0]*NbVCl[i] + Maro[0]*NbMaro[i];
        Pi1Qi1 [i] = CrDl[i]*NbVCrL[i] + CrDc[i]*NbVCrC[i] + ClDc[i]*NbVCl[i] + Maro[i]*NbMaro[i];
        Qi1 [i] = NbVCrL[i] + NbVCrC[i] + NbVCl[i] + NbMaro[i];
        Qi0 [i] = NbVCrL[0] + NbVCrC[0] + NbVCl[0] + NbMaro[0];
        Pi1Pi0Qi0 [i] = (CrDl[i] / CrDl[0]) * NbVCrL[0] + (CrDc[i] / CrDc[0]) * NbVCrC[0] + (ClDc[i] / ClDc[0]) * NbVCl[0] + (Maro[i] / Maro[0]) * NbMaro[0];
        Pi1Pi0Qi1 [i] = (CrDl[i] / CrDl[0]) * NbVCrL[i] + (CrDc[i] / CrDc[0]) * NbVCrC[i] + (ClDc[i] / ClDc[0]) * NbVCl[i] + (Maro[i] / Maro[0]) * NbMaro[i];
    }

    for (i = 0 ; i < n ; i = i + 1) /// On calcule chaque indice pour chaque valeurs de i
    {
        IML [i] = (Pi1Qi0[i] / Pi0Qi0[i]) * 100;
        IMP [i] = (Pi1Qi1[i] / Pi0Qi1[i]) * 100;
        MIL [i] = (Pi1Pi0Qi0[i] / Qi0[i]) * 100;
        MIP [i] = (Pi1Pi0Qi1[i] / Qi1[i]) * 100;
    }

    for (i = 0 ; i < n ; i = i + 1) /// On affiche les indices calculés
    {
        printf("Indice des moyennes selon Laspeyres au mois %d = ", i + 1);
        printf("%f", IML [i]);
        printf("\n");
        printf("Indice des moyennes selon Paasche au mois %d = ", i + 1);
        printf("%f", IMP [i]);
        printf("\n");
        printf("Moyenne des indices selon Laspeyres au mois %d = ", i + 1);
        printf("%f", MIL [i]);
        printf("\n");
        printf("Moyenne des indices selon Paasche au mois %d = ", i + 1);
        printf("%f", MIP [i]);
        printf("\n");
        system("pause");
        printf("\n");
        printf("\n");
    }

    fclose(fCrDl);
    fclose(fCrDc);
    fclose(fClDc);
    fclose(fMaro);
    fclose(fNbVCl);
    fclose(fNbVCrC);
    fclose(fNbVCrL);
    fclose(fNbMaro);

    return 0;
}
