Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Tableau] Si tout le tableau tableau[] < 600

Comment faire ?

Sujet résolu
    14 avril 2006 à 21:39:50

    Bonjour à tous
    J'ai une petite question à vous poser
    En fait, je voudrais exécuter quelque chose si tout le tableau (tableau[0], tableau[1], tableau[2]...) est inférieur à 600 (par ex)
    Dois-je absolument faire
    if(tableau[0] && tableau[1] && tableau[2] && tableau[3] (etc...))

    Ou y'a t'il un moyen de vérifier si toutes les valeurs du tableau sont inférieure à 600.
    Style
    if(tableau[] < 600) // si toutes les valeurs du tableau inférieures à 600


    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      14 avril 2006 à 21:55:49

      tu peux écrire une fonction qui teste toutes les cases une par une, non ?
      void testTableau(long tableau, long tailleTableau)
      {
      int i =;
      for(i=0;i<tailleTableau;i++)
      {
      if(tableau[i]<600)
      {
       [.....]
      }
      }
      }
      • Partager sur Facebook
      • Partager sur Twitter
        14 avril 2006 à 21:57:18

        Ouais ok je vois, merci !
        • Partager sur Facebook
        • Partager sur Twitter
          15 avril 2006 à 10:31:32

          En fait nan, j'ai toujours un problème, ce que je voudrais, c'est si une case du tableau est supérieure à 600 alors on réduit la valeur de cette même case.
          • Partager sur Facebook
          • Partager sur Twitter
            15 avril 2006 à 10:54:25

            Si la valeur d'une case est supérieur a 600 alors on reduit cette case de cette valeur :o ?

            Si ta case vaut 6 donc tu enlèves 6 ? Donc chaque fois qu'elle sera > à 600 elle vaudra 0 !
            C'est ca ?

            void testTableau(long tableau, long tailleTableau)
            {
            int i;
            for(i = 0 ; i < tailleTableau ; i++)
            {
            if(tableau[i] =< 600)
            {
             //Tes actions
            }
            else
            {
            tableau[i] = 0;
            }
            }
            }
            • Partager sur Facebook
            • Partager sur Twitter
              15 avril 2006 à 10:58:56

              Nan, j'ai du mal me faire comprendre.
              Si une case du tableau vaut plus de 600, on réduit la valeur de cette case
              (ex : Si tableau[5] vaut 600, alors tableau[5] vaut 599)
              • Partager sur Facebook
              • Partager sur Twitter
                15 avril 2006 à 11:08:35

                void testTableau(long tableau, long tailleTableau)
                {
                int i;
                for(i = 0 ; i < tailleTableau ; i++)
                {
                if(tableau[i] =< 600)
                {
                 //Tes actions
                }
                else
                {
                tableau[i] -= 1;
                }
                }
                }


                Voilà ;)
                • Partager sur Facebook
                • Partager sur Twitter
                  15 avril 2006 à 11:18:15

                  Je dirais plutôt

                  for(i=0;i<600;i++)
                  {
                       if (tableau[i] > 600)
                       //tes actions
                  }

                  Pas besoin d'else car si je ne me trompe il ne fait rien quand la case est plus petite que 600 ;)

                  Et ton truc ne marche pas si la valeur est 604, car après elle vaudra 603 , donc ce sera toujours plus grad que 600
                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 avril 2006 à 11:27:28

                    Oui c'est vrai pas besoin de else ( j'avais pris le code avant sans regarder ) :p

                    Puis je ne vois pas comment faire si elle vaut 604 pour qu'elel soit plus petite que 600. Peut-être avec une boucle...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      15 avril 2006 à 11:33:28

                      Même pas besoin de if (non testé) ;) :

                      #define SIZE_T 100

                      size_t size;
                      int i;

                      i = 0;
                      for (size = SIZE_T; size; size--) {
                              while(*(t + i++) >= 600)
                                      ;
                              --t[i];
                      }


                      Faites le test tout de même je suis pas sûr de moi. :euh:
                      • Partager sur Facebook
                      • Partager sur Twitter
                        15 avril 2006 à 11:34:59

                        Bon, je penses que je vais plutot vous donner mon code^^
                        (C'est de la SDL)
                        Ce code est dans la boucle while(continuer) après tous les events. Ce que je veux faire, c'est déplacer tous les "petes" (le nom des surfaces que je veux déplacer, y'en a 10). Dès que y'en a un qui touche un mur, il change de direction mais pas les autres.
                        Mon code actuel

                        // Position des petes
                        for(y = 0; y < 10; y++)
                                        {
                                                // Direction du début des petes
                                                if(debutPete == 1 && positionPete[y].x < 555 && positionPete[y].y < 713 && positionPete[y].y > 0 && positionPete[y].x > 0)
                                                {
                                                        positionPete[y].x+=3;
                                                        positionPete[y].y+=3;
                                                }
                                               
                                                // Si un pete touche le mur du haut
                                                for(j = 0; j < 10; j++)
                                                {
                                                        if(positionPete[j].y <= 0)
                                                        {
                                                                positionPete[j].y+=3;
                                                        }
                                                }
                                               
                                                // Si un pete touche le mur de droite
                                                for(j = 0; j < 10; j++)
                                                {
                                                        if(positionPete[j].x >= 555)
                                                        {
                                                                positionPete[j].x-=3;
                                                        }
                                                }
                                               
                                                // Si un pete touche le mur de gauche
                                                for(j = 0; j < 10; j++)
                                                {
                                                        if(positionPete[j].x <= 0)
                                                        {
                                                                positionPete[j].x+=3;
                                                        }
                                                }
                                               
                                                // Si un pete touche le mur du bas
                                                for(j = 0; j < 10; j++)
                                                {
                                                        if(positionPete[j].y >= 713)
                                                        {
                                                                positionPete[j].y-=3;
                                                        }
                                                }
                                        }       

                                        // On blitte les petes
                                        for(y = 0; y < 10; y++)
                                        {
                                                SDL_BlitSurface(pete, NULL, ecran, &positionPete[y]);
                                        }


                        Je pense que maintenant vous pourrez m'aider plus facilement
                        • Partager sur Facebook
                        • Partager sur Twitter
                          15 avril 2006 à 11:36:28

                          <delestage>
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Music only !
                            15 avril 2006 à 11:36:40

                            Et à la limite si tu veux que juste que tous les nombres soient plus petits que 600 bah tu mets

                            if (tableau[i] > 600)
                            tableau[i] = (rand()%600)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              15 avril 2006 à 11:40:36

                              Citation : -ed-

                              Citation : mleg



                              for (size = strlen(t); size; size--) {
                              }


                              strlen() ? Qui a dit que 't' est un tableau de char contenant une chaine valide ?



                              Oui désolé j'me suis planté (l'habitude des chaînes :-° ). Code corrigé.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                15 avril 2006 à 12:11:38

                                voila ce que j'ai trouvé comme solution (j'ai pas testé mais ça devrait marcher :p )
                                void testTableau(long tableau, long tailleTableau)
                                {
                                int i =0;
                                for(i=0;i<tailleTableau;i++)
                                {
                                if(tableau[i]>=600)
                                 {
                                 do
                                 {
                                     tableau[i]--;
                                 }while(tableau[i] >= 600);
                                 }
                                } 
                                }
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  15 avril 2006 à 12:57:23

                                  Oui mais bon, là la chiffre sera toujours 599 , donc autant mettre

                                  if (tableau[i] > 600)
                                  tableau[i] = 599;

                                  :lol:
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    15 avril 2006 à 13:02:58

                                    Citation : N1gHtm@r3

                                    Oui mais bon, là la chiffre sera toujours 599 , donc autant mettre

                                    if (tableau[i] > 600)
                                    tableau[i] = 599;



                                    Hum...

                                    #define N 600
                                    ...
                                       if (tableau[i] > N)
                                          tableau[i] = N - 1;

                                    Car le '600' pourrait très bien changer... D'une manière générale, il faut éviter de mettre des constantes 'en dur' (magic numbers) en plein mileu du code. Au minimum, il faut une expression consante globale (#define, enum, facilite la maintenance), si ce n'est un paramètre (code souple).
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Music only !

                                    [Tableau] Si tout le tableau tableau[] < 600

                                    × 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