Tri langage c

Résolu
techis Messages postés 24 Statut Membre -  
techis Messages postés 24 Statut Membre -
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
A voir également:

7 réponses

tisba972 Messages postés 370 Statut Membre 44
 
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 24 Statut Membre
 
salut mais jai rien compris
0
techis Messages postés 24 Statut Membre
 
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 370 Statut Membre 44
 
ç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 24 Statut Membre
 
est ce que vs pouvez me dire ou jai commis d erreur sur mon programme ??
0
tisba972 Messages postés 370 Statut Membre 44
 
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 24 Statut Membre
 
#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