Sortir proprement d'une boucle [Résolu]

Signaler
Messages postés
8
Date d'inscription
mardi 8 mars 2011
Statut
Membre
Dernière intervention
10 avril 2012
-
BunoCS
Messages postés
14744
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
21 février 2020
-
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

Messages postés
14744
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
21 février 2020
91
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...
Messages postés
8
Date d'inscription
mardi 8 mars 2011
Statut
Membre
Dernière intervention
10 avril 2012

Merci Buno, ta solution fonctionne bien et ça me changera des return sans argument.

A+
Messages postés
792
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
12 juillet 2019
7
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
Messages postés
14744
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
21 février 2020
91
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...
Messages postés
8
Date d'inscription
mardi 8 mars 2011
Statut
Membre
Dernière intervention
10 avril 2012

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+
Messages postés
14744
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
21 février 2020
91
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...