Posez votre question Signaler

Algo de permutation de valeur + et - [Résolu]

Anas - Dernière réponse le 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 .
Lire la suite 

Algo de permutation de valeur + et »

5 réponses
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
#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
Ajouter un commentaire
Réponse
+0
moins plus
- 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
Anas - 1 juin 2009 à 15:24
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Ce document intitulé « Algo de permutation de valeur + et - » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?