Tri langage c

Résolu/Fermé
techis Messages postés 21 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 12 mai 2010 - 4 mars 2010 à 20:49
techis Messages postés 21 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 12 mai 2010 - 4 mars 2010 à 21:48
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

7 réponses

tisba972 Messages postés 334 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 9 septembre 2011 44
4 mars 2010 à 20:54
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.
0
techis Messages postés 21 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 12 mai 2010
4 mars 2010 à 21:13
salut mais jai rien compris
0
techis Messages postés 21 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 12 mai 2010
4 mars 2010 à 21:19
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"
0
tisba972 Messages postés 334 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 9 septembre 2011 44
4 mars 2010 à 21:25
ç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





0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
techis Messages postés 21 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 12 mai 2010
4 mars 2010 à 21:28
est ce que vs pouvez me dire ou jai commis d erreur sur mon programme ??
0
tisba972 Messages postés 334 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 9 septembre 2011 44
4 mars 2010 à 21:43
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
0
techis Messages postés 21 Date d'inscription vendredi 19 septembre 2008 Statut Membre Dernière intervention 12 mai 2010
4 mars 2010 à 21:48
#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:::)
0