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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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.
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.