Algo de permutation de valeur + et -

Résolu
Anas -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
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. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    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
  2. Anas
     
    #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
  3. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    - 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. Anas
       
      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
  4. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    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