void VALEUR(){ // Valeur : string|num|tableau|true|false|null switch (sym_cour.code) { case STRING_TOKEN : sym_suiv();break; case NUM_TOKEN : sym_suiv();break; case MO_TOKEN : TABLEAU();break; case TRUE_TOKEN : sym_suiv();break; case FALSE_TOKEN : sym_suiv();break; case NULL_TOKEN : sym_suiv();break; default: Error(VALEUR_ERR) ; break; } }
void QAUX3VIRG(){ //qaux3virg ------------> valeur QAux3 | {Membres} QAux3 switch(sym_cour.code){ case STRING_TOKEN : sym_suiv();VALEUR();QAUX3();break; case NUM_TOKEN : sym_suiv();VALEUR();QAUX3();break; case MO_TOKEN : TABLEAU();VALEUR();QAUX3();break; case TRUE_TOKEN : sym_suiv();VALEUR();QAUX3();break; case FALSE_TOKEN : sym_suiv();VALEUR();QAUX3();break; case NULL_TOKEN : sym_suiv();VALEUR();QAUX3();break; case ACO_TOKEN : sym_suiv(); MEMBRES(); Test_Symbole(ACF_TOKEN,ACF_ERR); QAUX3();break; default: Error(QAUX3VIRG_ERR) ;break; } }
void trier(int trame,int reference,RESULT *table) { #define TABLEAU(t) (abs(table[t].rang-reference)) int t,bulle=1; for (t=0;t<cst_pics_amdf;t++) table[t] = Coeff_Amdf[t][trame]; while (bulle) for (bulle=t=0;t<cst_pics_amdf-1;t++) if ( (table[t].rang == -1 && table[t+1].rang != -1) || (TABLEAU(t) > TABLEAU(t+1) && table[t+1].rang != -1) ) { RESULT temp; temp = table[t+1]; table[t+1] = table[t]; table[t] = temp; bulle = 1; } #undef TABLEAU }
/* ********************************************************************** */ static void calcul_fo_moyen(int nb_trames, int *To_Moyenne) { int trame,nb,bulle; RESULT *table; int To_Moyenne_Corrigee; #define POURCENTAGE 30 #define ACCEPTABLE(valeur,moyenne,pourcentage) \ ( \ ((valeur) > (moyenne-pourcentage)) && \ ((valeur) < (moyenne+pourcentage)) \ ) #define TABLEAU(t) (abs(table[t].rang-(*To_Moyenne))) table = (RESULT *) ckalloc(sizeof(RESULT)*nb_trames); for (*To_Moyenne=trame=nb=0;trame<nb_trames;trame++) if ( VOISEE(trame) ) { table[nb++] = Coeff_Amdf[0][trame]; (*To_Moyenne) += Coeff_Amdf[0][trame].rang; } *To_Moyenne = (nb)? ((*To_Moyenne) / nb) : 1; if (debug) printf("To moyen non corrige : %d (fo=%d) \n",*To_Moyenne,cst_freq_ech / *To_Moyenne); /* ------- correction de la valeur de fo ----------- */ for (bulle=1;bulle;) { for (bulle=trame=0;trame<nb-1;trame++) if (TABLEAU(trame)>TABLEAU(trame+1)) { RESULT temp; bulle = 1; temp = table[trame]; table[trame] = table[trame+1]; table[trame+1] = temp; } } nb -= ((int ) POURCENTAGE * nb) / 100; for (To_Moyenne_Corrigee=0,trame=0;trame<nb;trame++) To_Moyenne_Corrigee += table[trame].rang; To_Moyenne_Corrigee = (nb)? (To_Moyenne_Corrigee / nb) : 1; /* -------- resultats ----------------------------------- */ *To_Moyenne = To_Moyenne_Corrigee; if (debug) printf("moyenne (a %d%% presque partout): %d (fo=%d)\n",100-POURCENTAGE, *To_Moyenne,cst_freq_ech / *To_Moyenne); ckfree((char *) table); #undef POURCENTAGE #undef ACCEPTABLE #undef TABLEAU }