Algo de permutation de valeur + et -

Résolu
Bonjour,
j'aimerai bien que quelqu'un m'aide a propos de ce sujet , j'aimerai avoir un algorithme de tri dans un tableau qui mettrai les nombres négatifs dans les cases mémoires a gauche et les positifs a droite . idée : en déclare deux curseurs (i) et (j) un a droite et l autre a gauche . (i) parcour le tableau de gauche a droite et quand il trouve la valeur + il stop , pendant que (j) fait la meme chose de droite a gauche , aprés permut (i) avec (j) .

Merci de bien vouloir m'aide à écrire ce programme je suis nouveau apprenti en algorithme .
Configuration: Windows Vista
Firefox 3.0.10

4 réponses

  1. Modérateur
    Désolée mais je fonctionne uniquement via le forum. Tu peux ouvrir un compte sur CCM et communiquer via messages privés si tu le souhaites.
    0
    1. Modérateur
      - Le type bool n'existe pas en C (que en C++), de même que les constantes true et false.
      - Le header <conio.h> doit être inclu le moins possible car il n'est pas portable (inclue juste <stdio.h> surtout qu'ici conio.h ne sert à rien).
      - La déclaration à la volée dans une boucle for (for(int...;;)) est possible en C++ mais pas en C.
      - Il manque la valeur de retour de main.
      - Dans ton tableau tu as inversé deux caractères (5 et -).
      - Ta fonction s'appelle TriABulle et non TriBulle.
      - La fonction getch n'existe pas dans la librairie standard, utilise plutôt getchar.

      Voici ton source corrigé :
      #include <stdio.h>
      
      void triABulle(int tableau[], int longueur)
      {
          int i;
          int permutation;
      
          do
          {
              permutation = 0;
              for(i=0; i<longueur-1; i++)
              {
                  if(tableau[i]>tableau[i+1])
                  {
                      tableau[i]=tableau[i+1];
                      permutation = 1;
                  }
              }
              longueur--;
          }
          while(permutation);
      }
      int main()
      {
          unsigned i;
          int tableau[10]={5,-6,8,7,6,-5,-4,-5,7,9};
          triABulle(tableau,10);
          printf("tableau trié \n");
          for(i=0;i<10;i++){
              printf(" %i \t",tableau[i]);
          }
          getchar();
          return 0;
      }
      

      Par contre je n'ai pas testé à l'exécution ce que ça donnait, j'ai juste vérifié que ça compilait.

      Bonne chance
      0
      1. merci pour l'aide , j'apprend bcp de vous, je pourrai avoir votre email pour que vous m'aidez parfois sur mes fausses solutions. merci
        0
    2. #include<stdio.h>
      #include<conio.h>
      void triABulle(int tableau[], int longueur)
      {
      int i;
      bool permutation;

      do
      {
      permutation = false;
      for(i=0; i<longueur-1; i++)
      {
      if(tableau[i]>tableau[i+1])
      {
      tableau[i]=tableau[i+1];
      permutation = true;
      }
      }
      longueur--;
      }
      while(permutation);
      }
      int main()
      {
      int tableau[10]={5,-6,8,7,6,-5,-4,5-,7,9};
      triBulle(tableau,10);
      printf("tableau trié \n");
      for(int i=0;i<10;i++){
      printf(" %i \t",tableau[i]);
      }
      getch();
      }

      voici ce que j es pu faire en c mais ca me donne une erreur lors de la compilation , aide SVP
      0
      1. Modérateur
        Le truc c'est qu'on peut t'aider si tu bloques sur un point précis, mais en aucun cas on n'écrira l'algorithme à ta place, comme mentionné ici :
        http://www.commentcamarche.net/faq/sujet 10925 demander de l aide pour vos exercices sur ccm

        Pour avoir de l'aide, il serait également souhaitable que tu donnes ce que tu as commencé à coder (et que tu précises le langage que tu as/souhaites utiliser).

        Enfin, la plupart de langage proposent au moins un qsort pour trier un tableau, donc à part pour l'aspect scientifique, ce n'est à mon avis pas la meilleure méthode en pratique pour trier un tableau.

        Bonne chance
        0