Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

NodeBB

  1. Home
  2. Programmation
  3. Développement de logiciels
  4. C
  5. "else if" dans une boucle

"else if" dans une boucle

Scheduled Pinned Locked Moved C
13 Posts 3 Posters 3.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • nellN
    nellN
    nell
    wrote on last edited by
    #4

    <p>Dans ce cas précis, tu pourrais faire</p>
    <pre class="ipsCode prettyprint">
    if (variable >= 0)
    {
    }
    for (index = 0 ; index < 150 ; index++)
    {
    if (variable<0) et (untableau[index] == 0)
         {
         }
    }
    else
    {
    }
     
    </pre>
    <p><span style="color:rgb(102,102,0);">un truc comme ça marcherait? En gros ajouter une condition qui remplirait la même condition que le else, parce qu'utiliser un else if comme tu veux le faire, je pense pas que ce soit possible, après j'fais pas de C donc je sais pas.</span></p>

    What is the ratio of the time I spend solving problems to the time I spend scaling successes?

    1 Reply Last reply
    0
    • C
      C
      cegdd
      wrote on last edited by
      #5

      <p>le problème avec ta solution c'est que le "else" appartient maintenant qu'au premier "if" ...<br/>
      il vas donc s'éxécuter meme si une condition de la boucle est vraie :unsure: </p>
      <p> </p>
      <p>EDIT: à part si je met uun booléens bloquant le "else" en cas de succès dans la boucle, mais ça devient compliqué pour pas grand chose ...</p>
      <p> </p>
      <p>EDIT 2 : en tout cas merci de ton aide =)</p>

      créateur de Reconquête-Salvatrice, un petit RPG 2D en ligne multi-plateforme [OpenGL / C]

      1 Reply Last reply
      0
      • nellN
        nellN
        nell
        wrote on last edited by
        #6

        <p>Dans l'exemple que j'ai mis, "if variable<0" reviendrait à un else qui n'appartient effectivement qu'au premier if.</p>
        <p> </p>
        <p>Seulement, tu peux ajouter d'autres conditions en plus du "if variable<0", pour prendre en compte plusieurs autres eventuels if</p>

        What is the ratio of the time I spend solving problems to the time I spend scaling successes?

        1 Reply Last reply
        0
        • C
          C
          cegdd
          wrote on last edited by
          #7

          <blockquote class="ipsQuote" data-cite="nell" data-ipsquote="" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="6628" data-ipsquote-contentid="618" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1398800381" data-ipsquote-username="nell"><div>
          <div>
          <p>Seulement, tu peux ajouter d'autres conditions en plus du "if variable<0", pour prendre en compte plusieurs autres eventuels if</p>
          </div>
          </div></blockquote>
          <p> </p>
          <p>Non, si le premier "if" est vrais, il dois stopper toute la chaine de "if else" qui suis (y compris la boucle), comme le ferais une cascade basique de "if""else if".</p><p></p><p>
          Ce type de condition dans mon code peux être ammené a faire les test jusque 60 fois par secondes ... donc il ne faut pas lui faire parcourir une boucle for pour rien ^_^ .</p>
          <p> </p>
          <p><span style="font-size:10px;">(je suis un peu éxigent ?)</span></p>

          créateur de Reconquête-Salvatrice, un petit RPG 2D en ligne multi-plateforme [OpenGL / C]

          1 Reply Last reply
          0
          • nellN
            nellN
            nell
            wrote on last edited by
            #8

            <pre class="ipsCode prettyprint">
            if (variable >= 0)
            {
            }
            if (variable == -5)
            {
            }

            for (index = 0 ; index < 150 ; index++)
            {
            if (variable<0) et (untableau[index] == 0) et (variable!=-5)
                 {
                 }
            }
            else
            {
            }</pre>
            <p>Peut être mettre les conditions sur une ligne pour éviter la cascade de else if?</p>
            <pre class="ipsCode prettyprint">
            if (variable >= 0)
            {
            }
            else if (untableau[index] == 0)
                {
                for (index = 0 ; index < 150 ; index++)
            {

                
            }
            }
            else
            {
            }
            </pre>
            <p>tu pourrais aussi mettre le else avant la boucle pour éviter des tours de boucle inutiles plus tôt et gagner du temps</p>
            <p> </p>
            <p>Sinon ba, j'ai plus d'idée atm x) </p>
            <p> </p>
            <p>En espérant que tu trouves une solution 🙂 </p>

            What is the ratio of the time I spend solving problems to the time I spend scaling successes?

            1 Reply Last reply
            0
            • C
              C
              cegdd
              wrote on last edited by
              #9

              <p>dans le premier code il y a toujours le problème du "else" qui appartient du coup qu'au second "if"</p>
              <p> </p>
              <p>dans le second il y a un problème avec le "else if" il seras lu qu'une fois avec une valeur "index" non défini.</p>
              <p> </p>
              <p>je te remercie pour ton aide nell, c'est gentil de ta part.</p>
              <p></p><p>j'ai trouvé une solution qui marche, mais ça me parait lourd ... 😞 </p>
              <pre class="ipsCode prettyprint">
              bool condition = false;

              if (variable <= 0)
              {
              condition = true;
              }

              if (condition == false)
              {
              for (index = 0 ; index < 150 ; index++)
              {
              if (tableau[index] == 1)
              {
              condition = true;
              }
              else if (condition == true)
              {
              continue;
              }
              }
              }
              if (condition == false)//équivalent du "else"
              {
              }
              </pre>
              <p>Si vous avez des idées plus légères je suis preneur.<br/><span style="font-size:10px;">(je suis pas étudiant j'ai le droit a tout.)</span></p>

              créateur de Reconquête-Salvatrice, un petit RPG 2D en ligne multi-plateforme [OpenGL / C]

              1 Reply Last reply
              0
              • AlexMogA
                AlexMogA
                AlexMog
                Modérateur spécialisé
                wrote on last edited by
                #10

                <blockquote class="ipsQuote" data-cite="cegdd" data-ipsquote="" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="6633" data-ipsquote-contentid="618" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1398802995" data-ipsquote-username="cegdd"><div>
                <div>
                <p>dans le premier code il y a toujours le problème du "else" qui appartient du coup qu'au second "if"</p>
                <p> </p>
                <p>dans le second il y a un problème avec le "else if" il seras lu qu'une fois avec une valeur "index" non défini.</p>
                <p> </p>
                <p>je te remercie pour ton aide nell, c'est gentil de ta part.</p>
                <p></p><p>j'ai trouvé une solution qui marche, mais ça me parait lourd ... 😞 </p>
                <pre class="ipsCode prettyprint">
                bool condition = false;

                if (variable <= 0)
                {
                condition = true;
                }

                if (condition == false)
                {
                for (index = 0 ; index < 150 ; index++)
                {
                if (tableau[index] == 1)
                {
                condition = true;
                }
                else if (condition == true)
                {
                continue;
                }
                }
                }
                if (condition == false)//équivalent du "else"
                {
                }
                </pre>
                <p>Si vous avez des idées plus légères je suis preneur.</p><p><span style="font-size:10px;">(je suis pas étudiant j'ai le droit a tout.)</span></p>
                </div>
                </div></blockquote>
                <p> </p>
                <p>Je vois ce que tu veux faire. Je corrige ton code desuite, en te disant tes erreurs:</p>
                <pre class="ipsCode prettyprint">
                bool condition = false;

                if (variable <= 0)
                {
                condition = true;
                }

                if (condition == false)
                {
                for (index = 0 ; index < 150 ; index++)
                {
                if (tableau[index] == 1)
                {
                condition = true;
                }
                else if (condition == true)
                {
                continue; // Ne sert à rien, n'utilises pas Continue si tu ne sais pas à quoi il sert.
                }
                }
                }
                if (condition == false)//équivalent du "else" // Faux.
                {
                }
                </pre>
                <p>Le recode qui marche vraiment:</p>
                <pre class="ipsCode prettyprint">
                if (variable > 0)
                {
                for (index = 0 ; index < 150 ; index++)
                {
                if (tableau[index] == 1)
                {
                condition = true;
                break;
                }
                }
                }
                if (!condition)
                {
                // à faire.
                }
                </pre>

                Multiplayer GameDev @ Unexpected
                

                Mon CV

                1 Reply Last reply
                0
                • C
                  C
                  cegdd
                  wrote on last edited by
                  #11

                  <p>Donc le "break", contrairement au "continue" va faire sortir du for ? j'ai essayé de chercher les différences entre le "continue" et le "break", mais ce n'est pas encore vraiment clair dans ma tête suivant si c'est un while, for, switch etc ...</p>
                  <p> </p>
                  <p>et je ne comprend pas pourquoi mon "<strong>if (condition == false)</strong>" est faux :huh: </p>
                  <p> </p>
                  <p>
                  merci AlexMog !</p>

                  créateur de Reconquête-Salvatrice, un petit RPG 2D en ligne multi-plateforme [OpenGL / C]

                  1 Reply Last reply
                  0
                  • AlexMogA
                    AlexMogA
                    AlexMog
                    Modérateur spécialisé
                    wrote on last edited by
                    #12

                    <blockquote class="ipsQuote" data-cite="cegdd" data-ipsquote="" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="6739" data-ipsquote-contentid="618" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1398963964" data-ipsquote-username="cegdd"><div>
                    <div>
                    <p>Donc le "break", contrairement au "continue" va faire sortir du for ? j'ai essayé de chercher les différences entre le "continue" et le "break", mais ce n'est pas encore vraiment clair dans ma tête suivant si c'est un while, for, switch etc ...</p>
                    <p> </p>
                    <p>et je ne comprend pas pourquoi mon "<strong>if (condition == false)</strong>" est faux :huh: </p>
                    <p> </p>
                    <p>merci AlexMog !</p>
                    </div>
                    </div></blockquote>
                    <p>c'est le "équivalent au else" qui était faux 🙂 . Ca n'équivaut pas à un else 😉 .</p>
                    <p>Continue saute tout le code suivant le continue, et retourne au début de la boucle (en ASM, c'est un jmp vers le début de la boucle).</p>
                    <p>Break arrete l'exécution de la boucle.</p>

                    Multiplayer GameDev @ Unexpected
                    

                    Mon CV

                    1 Reply Last reply
                    1
                    • C
                      C
                      cegdd
                      wrote on last edited by
                      #13

                      <p>merci pour tes explications claires  =)</p>

                      créateur de Reconquête-Salvatrice, un petit RPG 2D en ligne multi-plateforme [OpenGL / C]

                      1 Reply Last reply
                      0

                      Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                      Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                      With your input, this post could be even better 💗

                      Register Login
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Login or register to search.
                      Powered by NodeBB Contributors
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups