Partage
  • Partager sur Facebook
  • Partager sur Twitter

permuter des élèments

    22 octobre 2019 à 16:39:03

    Bonjour je bloque sur cet exercice j'aimerai avoir des pistes:

    voilà ce que j'ai compris. en gros j'ai un tableau vec: 1 4 6 8. Je dois échanger 8 6 4 1. Je sais échanger avec une variable temporaire. Mais je sais juste trier je n'arrive pas à résoudre ce problème j'ai besoin une piste. Ou alors je n'ai pas compris. 

    Le programme doit permettre de saisir un vecteur de nombres (après avoir saisi sa taille). Le but est ensuite de permuter les éléments (inverser le 1er élément avec la dernier, le 2e avec l'avant dernier, etc). Vous n'avez pas le droit d'utiliser un autre vecteur : l'inversion doit se faire directement dans le même vecteur. Au final, le vecteur inversé sera affiché.

    le code que j'ai essayer de faire:

    int tailleTableau=5;
        int vec[tailleTableau]={1,4,5,16,8};
        for(int i=0; i<tailleTableau; i++)
        {
            sauv=vec[k];
            vec[i+1]=vec[i];
            vec[i]=sauv;
        }



    merci d'avance 

    • Partager sur Facebook
    • Partager sur Twitter
      22 octobre 2019 à 17:06:47

      Et bien tu utilise deux variables une qui indice le premier élément (0), la deuxième qui indice de dernier élément (N-1). Ensuite à l'aide de ces deux variable, tu fais l'échange. Ensuite tu incrémentes la première et décrémente la deuxième et tu fais l'échange, et cela jusqu’à la moitié du tableau, qui devrait être quand les deux variables vont ce croiser. 

      • Partager sur Facebook
      • Partager sur Twitter
        22 octobre 2019 à 17:38:00

        rouloude a écrit:

        Et bien tu utilise deux variables une qui indice le premier élément (0), la deuxième qui indice de dernier élément (N-1). Ensuite à l'aide de ces deux variable, tu fais l'échange. Ensuite tu incrémentes la première et décrémente la deuxième et tu fais l'échange, et cela jusqu’à la moitié du tableau, qui devrait être quand les deux variables vont ce croiser. 


        pourquoi on incrémente la première et décrémente la deuxieme ? 

        pourquoi la moitié du tableau ? 

        voilà ce que j'ai fais:

        for(int k = 0; k < nb ; k++)
         {
         int sauv = vec[k];
         vec[k] = vec[nb - k - 1];
         vec[nb - k - 1] = sauv;
         }



        -
        Edité par Rose93 22 octobre 2019 à 17:54:24

        • Partager sur Facebook
        • Partager sur Twitter
          22 octobre 2019 à 18:00:58

          Pour faire cela :

          Rose93 a écrit:

          Le but est ensuite de permuter les éléments (inverser le 1er élément avec la dernier, le 2e avec l'avant dernier, etc). 

          La première (variable) pointe (ou indice) au début du tableau, la deuxième à la fin du tableau. Quand j'incrémente la première et décrémente la deuxième, la première pointe le deuxième élément et la deuxième l'avant dernier élément. Ainsi de suite...

          La moitié, parce que quand les variables arrive à la moitié, elles se croisent, et vont défaire ce que tu a fais. (en fait chacune aura parcourue sa moitié)

          EDIT : 

          Rose93 a écrit:

          voilà ce que j'ai fais:

          for(int k = 0; k < nb ; k++)
           {
           int sauv = vec[k];
           vec[k] = vec[nb - k - 1];
           vec[nb - k - 1] = sauv;
           }

          Tu as testé ?

          Parce que ça marche, mais faut s’arrêter à la moitié du tableau (nb/2) sinon tu défais ce que tu as fait.



          -
          Edité par rouloude 22 octobre 2019 à 18:09:16

          • Partager sur Facebook
          • Partager sur Twitter
            23 octobre 2019 à 0:00:29

            merci bc pour ton aide c'est compris en fait j'ai tapé sur papier en détail ce que fais algo et j'ai compris pourquoi on s'arrête à la moitié :D
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              29 octobre 2019 à 1:52:54

              salut

              code pour inverser un tableau

              #include <stdio.h>
              
              int main(void)
              {
                  int T[7] = {4, 9, 17, -2, 8, 0, 1};
                  for (int i = 0, j = 7 - 1; i < j; i++, j--)
                  {
                      int temp = T[i];
                      T[i] = T[j];
                      T[j] = temp;
                  }
                  printf("T[7] = {");
                  for (int i = 0; i < 6; i++)
                  {
                      printf("%d, ", T[i]);
                  }
                  printf("%d", T[6]);
                  printf("}\n");
              }
              



              -
              Edité par Anonyme 29 octobre 2019 à 2:18:47

              • Partager sur Facebook
              • Partager sur Twitter
                29 octobre 2019 à 9:38:12

                Salut,

                Pourquoi 2 variables ? On a le droit à une soustraction en index de table.

                • Partager sur Facebook
                • Partager sur Twitter

                Bonhomme !! | Jeu de plateforme : Prototype.

                  31 octobre 2019 à 18:04:23

                  En plus, si nb est impair, nb/2 est une division entière et l'élément du centre n'est pas touché.
                  Je veux dire qu'il ne sera pas permuté avec lui-même.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Le Tout est souvent plus grand que la somme de ses parties.

                    31 octobre 2019 à 18:11:44

                    PierrotLeFou a écrit:

                    En plus, si nb est impair, nb/2 est une division entière et l'élément du centre n'est pas touché.
                    Je veux dire qu'il ne sera pas permuté avec lui-même.
                    Et bien c'est parfais, vu qu'il est inutile de permuter l'élément du centre avec lui même!

                    • Partager sur Facebook
                    • Partager sur Twitter

                    permuter des élèments

                    × 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