Variable initialisée mais inconnue par le code, solution incompréhensible!

Résolu
mskhelladi Messages postés 3 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 6 avril 2008 - 6 avril 2008 à 15:55
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 - 6 avril 2008 à 17:57
Bonjour,

je développe un code de calcul CAA, j'ai un problème qui surgit sous
certaines conditions. ci-dessous la partie qui me pose problème :
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
<!--[if !IE]><--><!----><!--[endif]--><!--[if IE]>
<![endif]--> 
if(gcell[i].cedge[k].etype=="ref")
{
R.V1+=lij*H_ref(gcell[i].U2,&n).V1;
R.V2+=lij*H_ref(gcell[i].U2,&n).V2;
R.V3+=lij*H_ref(gcell[i].U2,&n).V3;
R.V4+=lij*H_ref(gcell[i].U2,&n).V4;
slij+=lij;
}
 

<!-- END TEMPLATE: bbcode_code -->le code ne reconnais plus "gcell[i].U2" et pourtant elle est bien calculé en amont.

pour résoudre le problème, j'ai essayé d'afficher le contenu de
"gcell[i].U2" et comme par hasard le programme (re)marche juste en
utilisant "cout" pour l'impression à l'écran (voir ci-dessous):

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
<!--[if !IE]><--><!----><!--[endif]--><!--[if IE]>
<![endif]--> 
if(gcell[i].cedge[k].etype=="ref")
{
if(gcell[i].cedge[0].etype=="ref")//artifice pour que ça marche
{
cout<<gcell[i].U2.V.V4<<endl;
}
 
R.V1+=lij*H_ref(gcell[i].U2,&n).V1;
R.V2+=lij*H_ref(gcell[i].U2,&n).V2;
R.V3+=lij*H_ref(gcell[i].U2,&n).V3;
R.V4+=lij*H_ref(gcell[i].U2,&n).V4;
slij+=lij;
}
 

<!-- END TEMPLATE: bbcode_code -->avez-vous une idée de quoi il s'agit?


merci par avance.

mskhelladi

4 réponses

mskhelladi Messages postés 3 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 6 avril 2008
6 avril 2008 à 17:56
merci pour tout j'ai résolu le problème remplaçant char* par std::string et ça marche

@+

mskhelladi
3
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
6 avril 2008 à 17:57
Le coup de rajouter un printf ou un cout et que ton code se met à marcher, c'est typique des conflits entre thread.
3
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
6 avril 2008 à 16:33
Ton programme est multithread ?

"le code ne reconnais plus "gcell[i].U2"" cad. Le compilo te dit qu'elle est pas définie ?
0
mskhelladi Messages postés 3 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 6 avril 2008
6 avril 2008 à 17:05
- oui le code est multithread
- non, pas d'erreur de compilation! mais le résultat donne des valeurs infinies pour "gcell[i].U2"
mskhelladi
0
Rejoignez-nous