Bonjour,
Je sais que ce problème est bête mais je ne comprends pas.
Voilà, je souhaiterais écrire un programme qui permet de chercher l'élément attaché (distance plus faible) à un élément déterminé dans un ensemble d'éléments. Quand l'élément trouvé n'est pas visité on regarde s'il correspond à la condition
(voir mon programme ci-dessous). S'il c'est le cas on prend cet élément. Sinon, on regarde l'élément le plus loin.Code:if(chargeProduit1>=0&&chargeProduit2>=0&&capaciteRestante>=0)
Ci-dessous mon programme. La valeur de l'élément trouvé correspond aux conditions est stockée dans la variable noeudProche .
Lors de l'exécution de mon programme, le compilateur m'affiche le même contenu de la variable noeudProche comme si il n'a pas tenu compte de cette ligne.Code:if(chargeProduit1>=0&&chargeProduit2>=0&&capaciteRestante>=0)
Pourquoi
Faut-il utiliser do while ou while au lieu de if pour que quand il ne trouve pas que la valeur de la variable chargeProduit1 et la valeur de la variable chargeProduit2sont >=0, il va chercher un autre élément (noeudProche) plus loin qui satisfait ces dernières conditions?
Merci par avance de vos aides.
Code:int chercherNoeud(int nbreNoeudsTrouve, double **distanceEntreVertices, GestionNoeuds *pGestionNoeuds, Circuit *pCircuit, int noeudDebut) { int i,j; int trouve; int noeudProche = 0; double distanceMin =1000; int chargeProduit1 =0; int chargeProduit2 =0; int capaciteRestante = capaciteMax; for(i=0;i<nbreNoeuds;i++) { trouve =0;//trouve est faux j=0; while(trouve==0&&j<taille) { if(i==pCircuit->tableau[j]) { trouve = 1; } else { j++; } } if(trouve==0 && distanceMin>distanceEntreVertices[noeudDebut][i]) { distanceMin=distanceEntreVertices[noeudDebut][i]; noeudProche = i; chargeProduit1 += pGestionNoeuds->tableau[noeudProche].demandProduit1; chargeProduit2+= pGestionNoeuds->tableau[noeudProche].demandProduit2; capaciteRestante-=pGestionNoeuds->tableau[noeudProche].demandProduit1 + pGestionNoeuds->tableau[ noeudProche].demandProduit2; if(chargeProduit1>=0&&chargeProduit2>=0&&capaciteRestante>=0) { noeudProche = i; } } } return noeudProche; }
-----