Tri langage c

Résolu
Bonjour,
je suis un débutant en langage c

je voudrais faire le tri croissant en c...

par deux boucle

^par exemple : 15 25 9 il devient 9 15 25

merci
Configuration: Windows XP / Firefox 3.6

7 réponses

  1. salut,

    Une piste.
    tu stock des nombres dans un tableau.
    Tu crées une boucle qui parcours le tableau tant que la valeur de la case n est inferieure à la valeur de la case n+1. et tu stok cette valeur dans la case P d'un autre tableau ( sachant que P est incrémenté de 1 à chaque stockage)
    Tu n'oublies pas de supprimer la valeur de la case que tu viens de récupérer sinon tu auras toujours le mm nombre.
    1. j'ai essayé mais ca marche pas!!

      #include<stdio.h>
      #include<conio.h>
      main(){
      int T[7];
      int i,j;
      int p;

      for(i=0;i<=6;i++)
      {
      printf("donner la valeur %d",i+1);
      scanf("%d",&T[i]);
      }
      for(i=0;i<=6;i++)
      {
      for(j=1;j<=7;j++)
      {
      if(T[0]>T[j])
      {
      p=T[0];
      T[0]=T[j];
      T[j]=p;
      }
      }
      }
      for(i=0;i<=6;i++)
      printf("%d\n",T[i]);
      getch();
      return 0;
      }

      ecrire un prog qui permet de trier au sens croissant le Tableau "T" de type entier et de dimension "7"
      1. ça fait longtemps que j'ai pas fait de C alors les syntaxes seront surement à revoir

        mettre les nombres dans un tableau , je pense que jusque là ça va.
        ensuite comparer les valeurs:
        tmp = tablo[0];
        for(i; i<longueur_tableau;i++)
        {
        if(tablo[i]<tmp)
        {
        tmp = tablo[i];
        indice = i;
        }
        else
        { indice=0;}

        }

        à la fin de cette boucle tu as la plus petite valeur dans tmp, et l'indice du tableau correspondant à cette valeur dans indice
        cherches un peu la suite...
        je suis sur qu'il existe déjà bon nombres de fonctions dispo sur le net pour ça

        1. est ce que vs pouvez me dire ou jai commis d erreur sur mon programme ??
          1. pourquoi utilise tu une boucle for avc i dans la deuxieme partie.
            tu as ta boucle for avc i, dans laquelle est imbriqué une boucle for avc j.
            mais tu utilises à aucun moment ton i .
            et pour ce qui est de ta boucle avec j, ça marche si on inverse tout le temps.
            mais si lors du premier passage T[0] est inferieur à T[j=1], on touche rien
            dc on compare T[0] à T[j=2]. T[0] est superieur donc on inverse. T[0] se retrouve alors derriere ( dc plus grand que T[j=1]) ...; à aucun moment tu ne compares T[j=1] et T[j=2]...
            aide toi de petit schema pour comprendre ce qui se passe dans ton code.
            Parcequ'il est vrai que à l'écrit comme ça , c'est pas évident à comprendre
            1. #include<stdio.h>
              #include<conio.h>
              main(){
              int T[7];
              int i,j;
              int p;

              for(i=0;i<=6;i++)
              {
              printf("donner la valeur %d: ",i+1);
              scanf("%d",&T[i]);
              }

              for(i=0;i<=6;i++)
              {
              for(j=i+1;j<=7;j++)
              {
              if(T[i]>T[j])
              {
              p=T[i];
              T[i]=T[j];
              T[j]=p;
              }
              }
              }

              for(i=0;i<=6;i++)

              printf("%d\n",T[i]);

              getch();
              return 0;
              }
              voila ca marche mercii:::)