Sortir proprement d'une boucle

Résolu
superjabar Messages postés 8 Date d'inscription mardi 8 mars 2011 Statut Membre Dernière intervention 10 avril 2012 - 5 juil. 2011 à 10:57
BunoCS Messages postés 15342 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 26 janvier 2023 - 6 juil. 2011 à 10:54
Bonjour à tous, j'ai un problème avec un code de calcul de valeur optimale.

C'est un algorithme de recherche stochastique du même type que le recuit simulé et il y a plusieurs cas suivant où l'on se

situe dans notre calcul, conditions qui une fois vérifiées en fin de boucle if, fait qu'on sort avec exit(0).

Le hic est que je dois me servir des valeur calculées et que cela me fait sortir du main().

J'ai tenté de palier en remplaçant les exit(0) par des return mais rien n'y fait, même un vulgaire cout

ne passe pas à la suit du code d'optimisation.

ex :

if(it > itmax)

            {

             printf(" Execution terminee \n");

             printf(" Convergence non atteinte \n");

 testb=1;

             return;

            }


Merci d'avance pour l'attention accordée à ce post

6 réponses

BunoCS Messages postés 15342 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 26 janvier 2023 103
5 juil. 2011 à 11:08
Yop,
exit() est un peu violent: cette méthode met fin, purement et simplement à ton application
return est moins violent: il permet de quitter la méthode en cours
Pour sortir d'une boucle et pouvoir exécuter le code qui la suit, il te faut utiliser la méthode continue:

for (int i=0; i<imax; i++)
{
  ...
  if (condition remplie)
  {
    continue;
  }
}
// ici, le code à exécuter au sortir de la boucle



@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
3
superjabar Messages postés 8 Date d'inscription mardi 8 mars 2011 Statut Membre Dernière intervention 10 avril 2012
5 juil. 2011 à 13:08
Merci Buno, ta solution fonctionne bien et ça me changera des return sans argument.

A+
0
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
6 juil. 2011 à 09:09
Bonjour,
Juste une question à Buno en ce qui concerne "continue" et au regard de ce que j'avais appris en C ( cf ce lien http://cplus.about.com/od/learningc/ss/clessonfive_3.htm). Je croyais que "continue" arrêtait les instructions suivantes de la boucle et on revenait au début de la boucle ( ce que je fais dans mes programmes), alors que "break" fait sortir de la boucle.
Y-a-t-il une subtilité avec le "if"?
Merci pour ta réponse.


louis


louis
0
BunoCS Messages postés 15342 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 26 janvier 2023 103
6 juil. 2011 à 09:57
Yop,
Mea culpa: Louis14 a tout à fait raison: je pensais à l'instruction "break" et j'ai noté "continue".
continue te fais repasser au tour de boucle suivant alors que break met fin à la boucle


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
superjabar Messages postés 8 Date d'inscription mardi 8 mars 2011 Statut Membre Dernière intervention 10 avril 2012
6 juil. 2011 à 10:51
Ecoutez, sur votre bonne foi, j'ai changé le continue en break mais ça marchait déjà et ça continue à marcher.

Tout ce qu'il fallait éviter dans mon cas, c'est le violent exit(0).

A+
0
BunoCS Messages postés 15342 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 26 janvier 2023 103
6 juil. 2011 à 10:54
Peux-tu me montrer ton code, s'il te plaît? J'aimerais voir dans quel cas tu es exactement.


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
Rejoignez-nous