IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

un simple break; mais comment ??


Sujet :

C++

  1. #1
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut un simple break; mais comment ??
    Bonjour à tous,

    j'ai une partie d'un programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for(int i = 0 ; i < 1000 ; i++)
       for(int j = 0 ; j < 800 ; j++)
            if(Fct(i,j) == 1.2)
               {
                   faire un traitement ;
                   goto NEXT ;
                }
     
    NEXT :
      ...
      ...
      ...
    j'ai fais la modification pour enlever le goto :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for(int i = 0 ; i < 1000 ; i++)
       for(int j = 0 ; j < 800 ; j++)
            if(Fct(i,j) == 1.2)
               {
                   faire un traitement ;
                   i = 1000 ;
                   j = 800 ;
                }
     
      ...
      ...
      ...
    je connais l'existance de l'instruction break et je veux l'implémenter, comment dois-je faire ???


    Merci d'avance ....


    @+
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Le break ne peut remonter que d'un seul niveau.
    Pour trois boucles imbriquées, il se peut qu'il soit préférable de faire sans.
    Mais bon, je vais te montrer avec:
    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
    25
    26
    27
    for(int i = 0 ; i < 1000 ; i++)
    	{
    	bool bQuit = false;
     
    	// Un traitement préliminaire, si on veut
     
    	for(int j = 0 ; j < 800 ; j++)
    		{
    		// Pourquoi pas un autre traitement préliminaire
     
    		if(Fct(i,j) == 1.2)
    			{
    			// faire un traitement spécial
    			bQuit = true;
    			break;
    			}
     
    		//Traitement postérieur : sera sauté par le break
     
    		}//for interne
     
    	if(bQuit)
    		break;
     
    	//Traitement postérieur : sera sauté par le break
     
    	}//for externe
    Ici, ce code a exactement le même déroulement que le tien (on voit encore mieux en indiquant où peuvent être les différents traitements).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Et casser en plusieurs fonctions qui calquent les traitements de "haut" niveau qui sont effectués ? C'est souvent bien plus propre et surtout bien plus maintenable que de faire des break et autres continue à tout va.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

Discussions similaires

  1. [C#] Impression GDI+, OK mais comment faire plus simple ?
    Par yo2105 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 29/12/2006, 20h29
  2. [XSLT] - Modèle réutilisable... mais comment l'utiliser.
    Par jacquesh dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 17/02/2006, 11h07
  3. Réponses: 4
    Dernier message: 13/12/2005, 18h14
  4. Simple floating mais pourtant IE bugge
    Par ArithmeticException dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 02/02/2005, 08h32
  5. HomeDB, oui mais comment ?
    Par Gregouz dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 27/10/2004, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo