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. #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:::)
    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. est ce que vs pouvez me dire ou jai commis d erreur sur mon programme ??
        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. 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. 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.