Algo de permutation de valeur + et -

Résolu/Fermé
Anas - 1 juin 2009 à 02:57
mamiemando Messages postés 33070 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2024 - 1 juin 2009 à 23:15
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 .

4 réponses

mamiemando Messages postés 33070 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2024 7 747
1 juin 2009 à 03:02
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
#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
mamiemando Messages postés 33070 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2024 7 747
1 juin 2009 à 15:16
- 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
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
mamiemando Messages postés 33070 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2024 7 747
1 juin 2009 à 23:15
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