Partage
  • Partager sur Facebook
  • Partager sur Twitter

regrouper les valeur d'un vecteur

algorithme de rougrepement

    23 novembre 2007 à 18:08:04

    bonjour a tous a tous,
    voila je fais un programme en c qui doit regrouper les valeurs ensembles.
    je m'explique; mettre tout les nombres negatifs au debut du vecteur , les nombre positifs a la fin du vecteur et les null au milieu.

    mais mon "algorithme" n'est pas tres au point et je ne comprend pas tres bien.

    voila le fragment de code:

    1. i=0;
    2.         d=0;
    3.         m=nbel/2;
    4.         f=nbel;
    5.         while (d!=f && i<nbel)
    6.         {
    7.                 if (v[i]>=0)
    8.                 {
    9.                         if (v[i]==0)
    10.                         {
    11.                                 temp=v[m];
    12.                                 v[m]=v[i];
    13.                                 v[i]=temp;
    14.                                 m++;
    15.                         }
    16.                         else
    17.                         {
    18.                                 temp=v[f];
    19.                                 v[f]=v[i];
    20.                                 v[i]=temp;
    21.                                 f--;
    22.                         }
    23.                 }
    24.                 else
    25.                 {
    26.                         temp=v[d];
    27.                         v[d]=v[i];
    28.                         v[i]=temp;
    29.                         d++;
    30.                 }
    31.                 i++;
    32.         }


    si quelqu'un s'aurait me donner une aide se serait sympa.
    • Partager sur Facebook
    • Partager sur Twitter
      23 novembre 2007 à 19:08:08

      tu peux la refaire mais en plus clair :euh: . Tu peux donner des noms plus clairs et aussi remattre cette fonction dans un contexte un peu plus parlant qua là ? Parce que je (et je pense pas être le seul) ne comprend pas trop ton but...
      Merci :)

      p.s : qu'entends tu par vecteur ?
      • Partager sur Facebook
      • Partager sur Twitter
        23 novembre 2007 à 19:45:21

        ben un vecteur un tableau a une dimension
        • Partager sur Facebook
        • Partager sur Twitter
          24 novembre 2007 à 0:44:31

          Ce qu'il faut que tu fasse c'est d'abord tester si ta valeur est positive, nulle ou négative.
          Ensuite ça dépend, est-ce que tes nombres doivent être organisés ou juste les négatif en premier, les nuls au milieu et les positif à la fin du tableau ?

          Si tu n'as pas d'ordre spécial (genre croissant), si tes valeurs à ranger sont contenues dans un tableau, alors tu peux parcourir ton tableau une première fois pour compter le nombre de positifs, de nuls et de négatifs.
          Ensuite, tu fais un autre tableau de la même taille que le premier.
          Tu parcours ton tableau a ranger, et à chaque nombre tu verifie s'il est positifis négatif ou nul. Et en fonction tu le place.

          Exemple : tu as un tableau à trier de 10 cases (5<0, 2 = 0, 3>0) et un tableau dans lequel tu rangera tes valeur de 10 cases aussi que t'initialise à 0.
          Tu parcours ton tableau, si tu tombe sur un négatif, tu le place dans les 5 premier (pour ne pas mettre 2 nombre sur la même case, soit t'utilise une variable qui s'incrémente à chaque négatif, soit tu test si la case que tu va supprimer est 0 (vide donc c'est bon) ou négative (déjà occupé, on passe à la suivante) ).
          Là tu aura placer touts tes négatifs ainsi.

          Pour les nuls, si tu as initialisé ton tableau à 0, tu n'a rien a changer, tu passe aux positifs.

          Pour les positifs, tu fais comme pour les négatifs.


          Ensuite, là ça marche bien parce qu'il faut pas ranger les nombre dans l'ordre croissant, mais si tu dois les classer, ça devient différent ;) (si c'est la cas, dis-le, j'avais déjà fais un programme qui rangeait dans l'ordre les nombre contenus dans un tableau).

          bonne chance (et désolé, mais j'ai l'habitude de faire des explications à ralonge :-° ).
          • Partager sur Facebook
          • Partager sur Twitter
            24 novembre 2007 à 10:45:01

            mes valeurs doivent bien etre croissante mais pas forcement tries, les negatifs peuvent etre dans un ordre quelconque et les positifs aussi, mais doivent etre regroupper en fonction de leur signe (negatif debut du vecteur, null au millieu et les positifs a la fin),
            mais je dois utiliser un seul vecteur et un seul tour de boucle.

            la est toute la difficulté
            • Partager sur Facebook
            • Partager sur Twitter

            regrouper les valeur d'un vecteur

            × 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