Bonjour,

Je suis entrain de developper une simulation de circuit electrique.
J'essai de creer une fonction qui permet le branchement, par des cables, entre des prises (noeuds).

les cables sont représenté par des fiches :
fiche1 et fiche2 => cable1
fiche3 et fiche4 => cable2
...

Si je connecte le noeud1 à un noeud2, tous les noeuds lié a noeud1 doivent se connecter au noeud2 et tous les noeuds connecté au noeud2 doivent se connecter au noeud1.

exemple :
etape 1. je branche prise1 avec prise3 (par nimporte quel cable)
etape 2. je branche prise3 avec prise5
etape 3. je branche prise3 avec prise6

avec ces etapes je dois avoir a la fin les prises 1,3,5,6 sont lié entre eux !

j'ai pensé à faire une fonction récursive, voila le code :

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
18
19
20
21
22
23
24
function branche(fiche1:Number,fiche2:Number){
	if (getEtat(fiche2)!=0 ) {
		prise_1=getEtat(fiche1);
		prise_2=getEtat(fiche2);		
		InsertCable(prise_1,prise_2);		
		trace("debut branchement:"+prise_1+"-"+prise_2);
 
		for(i=1;i<=nbre_fiche;i++){				
			trace("for"+i);
				if( i!=fiche1 && i!=fiche2 ){					
					if(getEtat(i)==prise_1){
						ext=extremite(i);
						branche(fiche2,ext);						
					}
 
					if(getEtat(i)==prise_2){
						ext=extreme(i);
						branche(fiche1,ext);						
					}
				}			
		}			
		trace("fin for");
	} 	
}
fonction getEtat(fiche) : permet de donner le num de la prise à laquel la fiche est connecté.

fonction extrimite(fiche) : permet de retourner le num de la fiche de lautre bout du cable.


le problème c'est qu'il ya interruption de la boucle for.

voila ce que j'obtient :

etape1 :

debut branchement:3-1
for1
for2
for3
for4
for5
for6
for7
for8
finfor

etape2:

debut branchement:5-3
for1
for2
for3
for4
debut branchement:5-1
for1
for2
for3
for4
for5
for6
for7
for8
finfor
finfor ( pb !!!!!!!)

etape 3:

debut branchement:6-3
for1
for2
for3
for4
debut branchement:6-1
for1
for2
for3
for4
for5
for6
for7
for8
finfor
finfor ( pb !!!!!!!)


là ou j'ai mis (pb !!!!!), il devait y avoir for5,for6,... mais la boucle for ne s'est pas terminé comme prévu.

J'espère que vous pouvez m'aider sur ce coup. J'arrive pas a trouver l'origine du probleme.

Merci davance.