J'ai un bug que je n'arrive pas à corriger car ce n'est pas mon code à la base.
Voilà le problème :
J'ai un opérateur Delta qui calcule la différence entre 2 valeurs consécutives d'un paramètre FRAME qui incrémente de 1 à chaque fois.
Le problème est que si je calcule le résultat des 2 paramètres a et b :
A = (+ (DELTA FRAME) (DELTA FRAME)(DELTA FRAME))
B = (DELTA (+ FRAME FRAME FRAME))
Le problème est que lorsque je lance mon programme :
J'obtient :
FRAME=0 ; a=X ; b=X puis
FRAME=1 ; a=X ; b=3 puis
FRAME=2 ; a=X ; b=3 puis
FRAME=3 ; a=3 ; b=3
La question est : Pourquoi l'écriture du paramètre A a besoin de 3 incrémentations du FRAME pour donner un résultat alors que le paramètre B non ?
valeur= argument->evalue(temps_reel, erreur);
/* on sélectionne les variables concernées */
if (IsRealTime(temps_reel))
traitement_d(ancienne_erreur, ancienne_valeur, valeur, result, erreur);
else
traitement_d(ancienne_erreurdiff, ancienne_valeurdiff, valeur, result, erreur);
return result;
}
void traitement_d(int& une_erreur, double& une_valeur, double& valeur, double& result, unsigned char& erreur)
{
if (erreur == 0)
{
if (une_erreur == 0)
/* si il n'y a pas d'erreur cette fois ci et la fois précédente */
result = valeur - une_valeur;
else
{
/* si le traitement précédent était invalide */
une_erreur= 0;
erreur= 1;
}
une_valeur= valeur;
}
else
une_erreur= 1;
}
Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois. Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.