Beispiel #1
0
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;     }
             }
Beispiel #2
0
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;
                         }
                 }
Beispiel #3
0
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
  }
Beispiel #4
0
/* ********************************************************************** */
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
  }