Sortir proprement d'une boucle [Résolu]

Messages postés
8
Date d'inscription
mardi 8 mars 2011
Dernière intervention
10 avril 2012
- 5 juil. 2011 à 10:57 - Dernière réponse :
Messages postés
14231
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
19 novembre 2018
- 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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
14231
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
19 novembre 2018
- 5 juil. 2011 à 11:08
3
Merci
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...

Merci BunoCS 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de BunoCS
Messages postés
8
Date d'inscription
mardi 8 mars 2011
Dernière intervention
10 avril 2012
- 5 juil. 2011 à 13:08
0
Merci
Merci Buno, ta solution fonctionne bien et ça me changera des return sans argument.

A+
Commenter la réponse de superjabar
Messages postés
788
Date d'inscription
mardi 8 juillet 2003
Dernière intervention
8 mars 2017
- 6 juil. 2011 à 09:09
0
Merci
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
Commenter la réponse de cs_louis14
Messages postés
14231
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
19 novembre 2018
- 6 juil. 2011 à 09:57
0
Merci
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...
Commenter la réponse de BunoCS
Messages postés
8
Date d'inscription
mardi 8 mars 2011
Dernière intervention
10 avril 2012
- 6 juil. 2011 à 10:51
0
Merci
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+
Commenter la réponse de superjabar
Messages postés
14231
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
19 novembre 2018
- 6 juil. 2011 à 10:54
0
Merci
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...
Commenter la réponse de BunoCS

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.