Un programme qui tri un tableau dans l'ordre croissant

Fermé
saidinfo Messages postés 10 Date d'inscription mardi 13 janvier 2015 Statut Membre Dernière intervention 11 octobre 2015 - Modifié par saidinfo le 13/01/2015 à 15:51
saidinfo Messages postés 10 Date d'inscription mardi 13 janvier 2015 Statut Membre Dernière intervention 11 octobre 2015 - 20 janv. 2015 à 23:51
j'ai déja essai avec s'est valeur (21,18,20,17,19) mais malheureusement joujours la case n°4 ne change pas aidez moi svp !!

#include <stdio.h>
#include <stdlib.h>
#define nb 5
void tri(int t[],int i)
{ int v=0,j=0;
    for (i=1;i<nb;i++)
    {
        v=t[i];
        j=i;
        while (t[i-1]>v)
        {
            v=t[i-1];
            t[i-1]=t[i];
            t[i]=v;

        }
    }
    for (i=nb-1;i>0;i--)
    {
        v=t[i];
        j=i;
        while(t[i-1]>v)
        {
            v=t[i-1];
            t[i-1]=t[i];
            t[i]=v;
   
        }

    }
}
int main()
{
    int i,t[100];
    printf("un programme qui tri dans l'ordre croisssant d'un tableux !\n");
    for (i=0;i<nb;i++)
    {
        printf("entrer la valeur n°%d\n",i+1);
        scanf("%d",&t[i]);
    }
    printf("le tableau inverse est \n");
    tri(t,i);
    i=0;
    while (i<nb)
        {
        printf("%d\t",t[i]);
        i++;
        }
    return 0;
}

2 réponses

Franck7511 Messages postés 14296 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 10 août 2017 1 121
13 janv. 2015 à 16:06
Le problème vient de ta fonction de tri !

Le while n'est pas adapté ici, un if convient. Mais je pense que tu as essayé de coder, sans succès, un tri à bulles.

Regarde ici pour avoir une idée de comment implémenter le tri à bulles : https://fr.wikipedia.org/wiki/Tri_%C3%A0_bulles

Accessoirement, fais gaffe quand tu déclares ton tableau de taille 100 (ligne 35), et que tu utilises nb (= 5) partout ailleurs.

Ici ça ne pose pas de problème, mais si tu changes nb pour une valeur plus grande que 100, tu auras des problèmes.
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
13 janv. 2015 à 16:17
Yep, mais il faudra un while/for en plus du if
0
saidinfo Messages postés 10 Date d'inscription mardi 13 janvier 2015 Statut Membre Dernière intervention 11 octobre 2015
13 janv. 2015 à 16:48
effectivement fanck merci infiniment
0
saidinfo Messages postés 10 Date d'inscription mardi 13 janvier 2015 Statut Membre Dernière intervention 11 octobre 2015
20 janv. 2015 à 23:51
fiddy t'as totalement raison !! mrc
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
13 janv. 2015 à 15:36
Bonjour ce serait bien aussi!
0