OVH Cloud OVH Cloud

probleme cout

1 réponse
Avatar
Youssef Mesri
bonjour a tous,
que dites-vous sur un code qui retourne un resultat dependant de cout:

j'ai une fonction qui retourne un double:
double MR::average_lenght_edge_on_element(unsigned long element_number,
Mat_DP &element_metric, Distributed_Mesh &mesh )
dans cette fonction j'ai une boucle ou j'ajoute un cout pour avoir un
resultat correct sinon la fonction retourne une autre valeur, j'ai
l'impression qu'il y a un buffer a vider et c'est le cout qui s'en charge!!:
for (counter_i=0;counter_i<mesh.dim;counter_i++)
{

for (counter_j=counter_i+1;counter_j<mesh.dim+1;counter_j++)
{
average_lenght+=MR::square_lenghtM_edge(id_i,id_j,
element_metric,mesh);
// cout << endl; // resultat faux
cout << endl; //resultat voulu
}
}
pourrez-vous m'expliquer qui ce que se passe?
merci

1 réponse

Avatar
Aurélien Barbier-Accary
for (counter_i=0;counter_i<mesh.dim;counter_i++)
{
for (counter_j=counter_i+1;counter_j<mesh.dim+1;counter_j++)
{
average_lenght+=MR::square_lenghtM_edge(id_i,id_j,
element_metric,mesh);
// cout << endl; // resultat faux
cout << endl; //resultat voulu
}
}
pourrez-vous m'expliquer qui ce que se passe?
merci


Bonjour,

si dans la 2ème boucle vous remplacez "counter_j<mesh.dim+1" par
"counter_j<mesh.dim" le problème persiste-t-il ?

Je m'explique: il arrive souvent qu'une mauvaise gestion de la mémoire
(lecture/écriture hors d'un tableau, ...) produise des effets indésirables qui
ne se révèlent (ou disparaissent) que lors d'affichages ou à la fin d'une fonction.
Je pense donc que vous devriez bien vérifier que toutes vos bornes sont justes
et que tout ce qui a trait à des pointeurs est bien utilisé.

Sinon pour le moment je ne vois pas mais essayez alors de réduire le code
jusqu'à quelque chose de minimal qui reproduise l'erreur. Vous devriez ainsi
résoudre tout seul votre problème.

Cordialement.
Aurélien.