Bonjour à tous,

J'ai un problème que j'arrive pas à résoudre
tout me semble correcte et à la fois, j'arrive pas à tenir le bout du fil

Voilà, je fais un parcours d'un set d'entiers (ensemble_entier dans le code)
aprés je cherche dans un map l'element dont l'id est l'entier courant du set.
Le deuxième element de mon map est une regle ( exempe de regle 1 3 -> 4)
donc une regle est constituée d'une partie premisse (ici 1 3) qui est un set d'entiers
{1 ,3} et une partie conclusion (conc= 4: entier)

donc dans mon code les méthodes retourner_conclusion() et retourner_premisse()
permettent de retourner respectivement la conlusion et la premisse d'une regle

Le problème, c'est que mon code marche bien quand je ne fais pas appel à retourner_premisse().

avec retourner_premisse, ce bout de code boucle jusqu'à l'infini
sachant que dans retourner_premisse(), je fais juste un return premisse
et que ça marche bien dans d'autres parties de mon programme

merci si vous avez une idée


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
//conc est une entier
//premisse est un set d'entiers
for(set<int>::iterator i=ensemble_entier.begin();i!=ensemble_entier.end();i++)
{
 
cout<<"je vais chercher l'element "<<(int)*i;
map<int, regle > ::iterator m = regles.find((int)*i);
 
conc=(*m).second.retourner_conclusion();
cout<<"conclusion ="<<conc;
 
 
// c'est cette partie du code qui génére une boucle infinie
p=(*m).second.retourner_premisse();
cout<<"premisse ";afficher_set(p);
}