1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| for(i=0;i<NB_LAT;i++)
{
for(j=0;j<NB_LON;j++)
{
// Pour chaque couple (lat,lon) : lecture de chaque groupe de lignes correspondant
fgets(buffer,LONG_MAX_LIGNE,fp);
sscanf(buffer,"%f %f",&lat,&lon);
// Nombre d'obs et nombre de classes
fgets(buffer,LONG_MAX_LIGNE,fp);
sscanf(buffer,"%d %d",&nb_obs,&nb_clas);
// lecture des valeurs au centre de classe et remplissage de Tab_val[k][1] (k=classe)//
fgets(buffer,LONG_MAX_LIGNE,fp);
long_buf=strlen(buffer);
long_art=long_buf/nb_clas;
for(k=0;k<nb_clas;k++)
{
sscanf(buffer+(k*long_art),"%s",chaine_lue);
valeur_centre_classe=atof(chaine_lue);
Tab_val[k][1]=valeur_centre_classe;
Tab_val[k][3]=0.;
}
// lecture des effectifs par classe et remplissage de Tab_val[k][2] (k=classe)//
fgets(buffer,LONG_MAX_LIGNE,fp);
long_buf=strlen(buffer);
long_art=long_buf/nb_clas;
for(k=0;k<nb_clas;k++)
{
sscanf(buffer+(k*long_art),"%s",chaine_lue);
valeur_pourcentage=atof(chaine_lue);
Tab_val[k][2]=valeur_pourcentage;
}
pourcentage_cumule=0.;
for(k=0;k<nb_clas;k++)
{
pourcentage_cumule+=Tab_val[k][2];
Tab_val[k][3]=pourcentage_cumule;
}
// Calcul du percentile pour le point de grille //
k=0;
percentile=0.;
printf("Calcul du percentile\n");
while((seuil>Tab_val[k][3])&&(k++<nb_clas-1)); // Faire k++ tant que tab_val<seuil et nb_classes non atteint //
if (k>0) percentile=Tab_val[k-1][1]+(Tab_val[k][1]-Tab_val[k-1][1])*((seuil-Tab_val[k-1][3])/(Tab_val[k][3]-Tab_val[k-1][3]));
fprintf(fp_out," %.4e",percentile); |
Partager