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
    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
    1. #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 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. 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