Partage
  • Partager sur Facebook
  • Partager sur Twitter

Traduction chaine if a Boucle

    5 novembre 2006 à 0:57:55

    Rebonjour a tous!
    me revoila avec un nouveau probleme!
    j'essaye de me casser la tete depuis une heure pour transformer cette chaine de if else en une boucle plus simple je n'y arrive pas!
    aidez moi plz!je trouve que ca fait tache dans mon code d'avoire ca!
    il faut en faite prendre une variable i allant de 0 a 6
    et de faire tablo[x][y-i] mais ce que j'obtient n'est pas juste parceque je veux mettre qu'une seule valeur 1 attribué a tableau[2][5] et si tablo[2][5]possede deja une valeur je veux attribuer 1 a tablo [2][4] etc etc !!


    x=2
    y=5;

        if (tablo[x][y]==0)
            tablo[x][y]=1;
        else
        if (tablo[x][y-1]==0)
        tablo[x][y-1]=1;
        else
        if (tablo[x][y-2]==0)
        tablo[x][y-2]=1;
        else
        if (tablo[x][y-3]==0)
        tablo[x][y-3]=1;
        else
        if (tablo[x][y-4]==0)
        tablo[x][y-4]=1;
        else
        if (tablo[x][y-5]==0)
        tablo[x][y-5]=1;
        else
        if (tablo[x][y-6]==0)
        tablo[x][y-6]=1;
    • Partager sur Facebook
    • Partager sur Twitter
      5 novembre 2006 à 1:01:03

      Mettre tes if dans une boucle, ça marche pas ?

      EDIT:
          int i;
          if (tablo[x][y] == 0)
              {
                  tablo[x][y] = 1;
              }

          for (i = 1; i < 7; i++)
          {
              if (tablo[x][y - i] == 0)
              {
                  tablo[x][y - i] = i;
              }
          }


      A l'arrache, indentation à la main. Flemme de lancer l'IDE.
      • Partager sur Facebook
      • Partager sur Twitter
        5 novembre 2006 à 1:04:56

        j'y arrive pas :'( ce que je veux faire en faite c'est attribuer a la case tablo[x][y] une valeur 1 DANS l'UNIQUE CAS OU tablo[x][y] ==0 sinon je passe a
        tablo[x][y-1] et si tablo[x][y-1]==0 je met 1 a tablo[x][y-1] sinon je passe a la suite etc etc

        Kr00pS
          int i;
            if (tablo[x][y] == 0)
                {
                    tablo[x][y] = 1;
                }
                                           //il faut un else?
            for (i = 1; i < 6; i++)
            {
                if (tablo[x][y - i] == 0)
                {
                    tablo[x][y - i] = i; // pourquoi tu donne i?
                }                        //dans ce ca toutes les cases vont prendre la valeur i
            }

        • Partager sur Facebook
        • Partager sur Twitter
          5 novembre 2006 à 1:06:39

              int i = 0;
              for (; i < 7; i++)
              {
                  if (tablo[x][y - i] == 0)
                  {
                      tablo[x][y - i] = 1;
                      break;
                  }
              }

          edit : code modifié ! i => 1
          • Partager sur Facebook
          • Partager sur Twitter
            5 novembre 2006 à 1:14:30

            ah mais non c'est bien ce que je pensai ca donne la valeur i a tout le reste des cases du tabluea :/ alors ke moi je veux que ca n'y touche pas :/
            • Partager sur Facebook
            • Partager sur Twitter
              5 novembre 2006 à 2:35:08

              Citation : popo_joe

              ah mais non c'est bien ce que je pensai ca donne la valeur i a tout le reste des cases du tabluea :/ alors ke moi je veux que ca n'y touche pas :/

              ce que je veux faire en faite c'est attribuer a la case tablo[x][y] une valeur 1 DANS l'UNIQUE CAS OU tablo[x][y] ==0



              C'est ca que tu veux

              Avant
              1 2 3 4
              4 5 6 7
              8 9 0 1

              Après
              1 2 3 4
              4 5 6 7
              8 9 1 1

              Dans ce cas :

                 {
                    size_t i;
                    for (i = 0; i < sizeof tab / sizeof *tab; i++)
                    {
                       size_t j;
                       for (j = 0; j < sizeof *tab / sizeof **tab; j++)
                       {
                          if (tab[i][j] == 0)
                             tab[i][j] = 1;
                       }
                    }
                 }

              avec

               int tab[][4]=
               {
                  {1,2,3,4},
                  {4,5,6,7},
                  {8,9,0,1},
               };
              • Partager sur Facebook
              • Partager sur Twitter
              Music only !
                5 novembre 2006 à 3:24:27

                Merci c sharp c giga sympa de ta part en plus tu repond a tous mes postes! engros sur quoi je travaille c un jeu de puissance 4 et je doi mettre des X et des O en gros je doi definir la colonne et enuite il met un X en ba de la colonne et si il y a deja un X il en met un par dessu etc etc.
                j'ai mis ca comme solution malgré le faite ke utiliser des break c giga boykoté par nos profs!


                y=5;                                                       // j'initialise y a 5 c'est a dire en bas du tableau.

                    for (i=0; i < 7; i++)                                      // dans ce cas j'attribue a grille[x][y] la valeur 1 seulement
                                                                               // si grille[x][y]== 0 sinon je passe a grille[x][y-1] etc etc
                {
                        if (grille[x][y - i] == 0)
                {
                            grille[x][y - i] = 1;break;
                }
                }


                LE BREAK ds ce cas fait en sorte d'attribuer qu'une seule valeur puis d'arreter la fonction...c'est une bonne idée mé c jouer avec le feu lol.


                ca fonctionne mais le break me gene vraiment :/
                et si je veux que ce soit egal a 0 c'est parceque en realité j'initialise mon tablo en mettant 0 dans toutes les cases.
                • Partager sur Facebook
                • Partager sur Twitter
                  5 novembre 2006 à 4:53:29

                  Par pitié : fait un effort pour indenter correctement ton code !!!
                  y = 5; // j'initialise y a 5 c'est a dire en bas du tableau.

                  for (i = 0; i < 7; i++) // dans ce cas j'attribue a grille[x][y] la valeur 1 seulement
                  {                       // si grille[x][y]== 0 sinon je passe a grille[x][y-1] etc etc
                     if(grille[x][y - i] == 0)
                     {
                        grille[x][y - i] = 1;
                        break;
                     }
                  }

                  C'est un peu mieux non?

                  Remarque :
                  Lors de la 1° boucle du for y = 5 et i = 0 donc y - i = 5 => Pas de soucis.
                  2° boucle... etc...
                  On arrive à la 7° boucle du for y = 5 et i = 6 donc y - i = -1
                  => Problème : tu essayes d'accéder à grille[5][-1] qui n'existe en aucun cas !!!
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Traduction chaine if a Boucle

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown