Posez votre question Signaler

Débutant en C : trier tableau ?

ninie - Dernière réponse le 9 mars 2012 à 18:04
Es ce qu'une personne sait comment trier un tableau de valeurs par ordre croissant en langage C ?

car je dois initialiser un tableau de 7 valeurs aléatoires en les triant dans l'ordre croissant ds un meme tableau

merci davance c urgent
Lire la suite 

Débutant en C : trier tableau »

33 réponses
Réponse
+5
moins plus
salut,

juste une autre solution. compilé sous linux

exo du www.siteduzero.fr

// une fonction ordonnerTableau qui classe les valeurs d'un tableau dans l'ordre croissant. Ainsi, un tableau qui vaut {15, 81, 22, 13} doit à la fin de la fonction valoir {13, 15, 22, 81} !

#include <stdio.h>


void ordonnerTableau(long tableau[], long tailleTableau);



int main(int argc, char *argv[])
{
long tab[4] = {15,81,22,13};

int i=0;

ordonnerTableau(tab,4);

for(i=0; i<4; i++)
{
printf("%ld\n",tab[i]);
}
return 0;
}

void ordonnerTableau(long tableau[], long tailleTableau)
{
long i,t,k=0;

for(t = 1; t < tailleTableau; t++)
{
for(i=0; i < tailleTableau - 1; i++)
{
if(tableau[i] > tableau[i+1])
{
k= tableau[i] - tableau[i+1];
tableau[i] -= k;
tableau[i+1] += k;
}
}
}
}
touf57 - 27 oct. 2010 à 23:33
dudulle93
le for que tu ne comprends pas est une notation élémentaire des boucles for en langage objet.
Donc for(int t=1;t<tailleTableau;t++) signifie:
pour un index de type entier à partir de 1
tant que l'index t est inférieur à la taille du tableau
incrémente t (bien que je préfère la notation ++t)

En globale cela veut dire que tu vas boucler de 1 à la taille du tableau -1, et a chaque boucle tu incrémentes ton compteur t.

J'espère que c'est plus clair pour toi
bouira10 - 18 mai 2011 à 22:34
en ajoute quoi pour change se pregramme a une fonction d'un programme si en veux ajoute une valeur comment en peux garde l'ordre croissant
mido - 26 déc. 2011 à 14:17
#include <stdio.h>
#include <stdlib.h>
void ordonner(int T[],int);

int main(int argc, char *argv[])
{
int T[5]={7,4,5,3,8},i;

ordonner(T,5);
for(i=0;i<5;i++)
{
printf("T[%d]=%d\n",i,T[i]);
}
system("pause");
return 0;
}
void ordonner(int T[],int taille)
{
int i,j,p=0;
for(j=0;j<taille;j++)
{
for(i=0;i<taille;i++)
{
do
{
p=T[i];

T[i]=T[i+1];

T[i+1]=p;

}while(T[i]>T[i+1]);
}
}
}
Ajouter un commentaire
Réponse
+3
moins plus
voila un petit programme de tri croissant dans un tableau unidimensionnel!!..reste a compiler!!
#include<stdio.h>
#include<stdlib.h>
main()
{
int i,n,c,j;
int T[n];
printf("entrer la valeur de n : ");
scanf("%d",&n);
for (i=1;i<=n;i++)
{
printf("T[%d]= ",i);
scanf("%d",&T[i]);
}
for (j=1;j<=n;j++)
{
for (i=1;i<n;i++)
{
if (T[i]<T[i+1])
{
c=T[i];
T[i]=T[i+1];
T[i+1]=c;
}
}
}
for (i=1;i<=n;i++)
//affichage
printf("T[%d]=%d \n",i,T[i]);
system("pause");
}
Diop - 2 juil. 2011 à 01:27
C'est juste cette solution mais seulement votre deuxieme boucle c'est a dire "for(j=1;j<=n;j++)" ne sert a rien ici.Elle inutile.Merci
fiddy- 2 juil. 2011 à 10:49
Diop,
Tu réponds à une question qui date de plus de deux ans où on a déjà répondu...
Cdlt,
Mouaad1991- 9 mars 2012 à 18:04
STP , je voudrais un Programme en C qui tri des nombres dans deux tableaux :
dans le premier tableau les nombres pairs et dans l'autre les impairs.
Merci d'avance
Ajouter un commentaire
Réponse
+2
moins plus
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

main()
{
int N,* tab,x,i,nombre,temp;
printf("N:");
scanf("%d",&N);
srand((unsigned int)time(NULL));
tab=(int *)malloc(N*sizeof(int));
for(i=0;i<N;i++)
{
nombre = rand()%100 +1;
tab[i]=nombre;
}
printf("Tableau non trier:\n");
for(i=0;i<N;i++)
{
printf("tab[%d] : %d\n",i,tab[i]);
}
printf("\n\nTableau trier:\n");
for(x=0;x<N;x++)
{
for(i=0;i<N;i++)
{
if((tab[i]) < (tab[i+1]))
{
temp=tab[i];
tab[i]=tab[i+1];
tab[i+1]=temp;
}
}
}
for(i=0;i<N;i++)
{
printf("tab[%d] : %d\n",i,tab[i]);
}
getch();
}
fiddy- 15 oct. 2010 à 13:56
Ton code contient des erreurs.
if((tab[i]) < (tab[i+1]))
Puisque i varie de i à N-1 avec le for, la valeur maximale de i+1 sera N. Et tab[N] est hors du tableau...

La fonction main renvoie un int. Donc son prototype est : int main (void)
Et il faut mettre return 0; à la fin.

Ensuite en amélioration :
nombre = rand()%100 +1;
Pourquoi passer par une variable nombre ?
Ajouter un commentaire
Réponse
+2
moins plus
void ordonnerTableau(int tableau[], int tailleTableau){
int i, m, k;
for(k = 0; k < tailleTableau; k++) {
for(i = 1; i < tailleTableau; i++) {
m = tableau[i] - tableau[i - 1];

if(m < 0) {
tableau[i] = tableau[i - 1];
tableau[i - 1] = tableau[i] + m;
}

}}
for(i = 0; i < tailleTableau; i++) {
printf("%d\n", tableau[i]);
}
}
Ajouter un commentaire
Réponse
+1
moins plus
Salut!

#include <stdlib.h>
void qsort(void base, size_t nmemb, size_t size,
	int (*compar)(const void *, const void *));


Il n'y a rien à faire et ça fait parti du standard C que demande plus le peuple?

NB: Pour choisir l'ordre croissant ou décroissant il suffit de changer la fonction compar.
Ajouter un commentaire
Réponse
+0
moins plus
merci
Ajouter un commentaire
Réponse
-1
moins plus
Voilà tout le programme de tri(sous windows) par la methode trimin, reste à la compiler :
#include<stdio.h>
#include<stdlib.h>
main()
{ int tab[7]="5,89,23,999,2";
int i,j,indmin,q;
for(i=0;i<7;i++)
{ indmin=i;
for(j=i+1;j<7;j++)
if(tab[j]<tab[i]) indmin=j;
q=tab[i];
tab[i]=tab[indmin];
tab[indmin]=q;
}
system("pause");
return 0;
}
Bon courage
snifman - 31 oct. 2008 à 13:06
bonjour,
helali j'espere ke tou ca se passe bien chez toi,est ce que vous pouvez me dire d'ou je peux trouver des exercices du language c precisement les tableaux comme (tri par insertion,tri normale.... ) avec des pointeur.
alors si vous voulez me contacter voila mon adresse E-mail:alaeand1@hotmail.com
Merci
Ajouter un commentaire
Réponse
-2
moins plus
Bonjour,

Réinventer la roue?!
C'est sur mais quand c'est pour apprendre, c'est très utile :)
donc si quelqu'un a une solution car j'ai le même soucis sauf que moi l'utilisateur doit rentrer 8 valeures entre 0 et 255 et j'ai pensé que créer deux tableaux, un stockant les valeures entrées, et un autre pour afficher les valeures triées.
Mais j'ai pas de réelle expérience en algo donc un pti coup de pouce n'est pas de refus

Merci d'avance :)
sthael_01- 22 août 2008 à 00:06
been je vais t'aider si ce forum existe c'est tout de meme pour s'entraider aussi car tout vaut le cout pour apprendre:

#include<stdio.h>/* declaration des bibliotheques */
#include<conio.h>

var
int i,j; /*declaration des variables */
float A[7],temp;
void main()
{
for (i=0;i<7;i++)
{
printf("A[%d]=",i+1);
scanf("%f",&A[i]);
}
printf("affichage du tableau:\n");
for (i=0;i<7;i++)
printf("%.2f\t",A[i]);
printf("resultat du tableau trié:\n");
for (i=0;i<6;i++)
for (j=i+1;j<7;j++)
if (A[i]>=A[ j]
{
temp=A[i];
A[i]=A[ j];
A[ j ] =temp;
}
for (i=0;i<7;i++)
printf("%.2f\t",A[i]);
getch();/*pour retenir l'affichage*/
}
j'esper que ton probleme est resolu
Ajouter un commentaire
Réponse
-2
moins plus
et les ga jai pas fait attention à la date de toute façon c'est pas grave
les solutions sont donc là et peuvent y deumerer
Ajouter un commentaire
Réponse
-3
moins plus
Merci bien :)

Et merde à scoubidou si t'es pas content tu répond pas et surtout que la réponse n'est pas donnée plus haut au "probleme" que j'ai soulevé :)
Ajouter un commentaire
Réponse
-3
moins plus
si elle est marquée.
ensuite tu restes poli
ensuite tu n'as pas cherché sur google un minimum parce que tu veux une réponse toute cuite.

2 mot à taper : qsort msdn
et ca donne :
[url]http://msdn.microsoft.com/en-us/library/zes7xw0h(VS.71).aspx/url

Je n'irais pas jusqu'aux STL parce que là non plus tu n'as pas du chercher...
Ajouter un commentaire
Réponse
-3
moins plus
/*voici un algorithme de tri pour débutant*/
#include<stdio.h>
int main()
{
int N,i,T[N],tmp,echange;
echange=1;

printf("Donner la taille du tableau");
scanf("%d",&N);

for(i=0; i<=N-1; i++)
{
printf("Donner la valeur de la colonne %d \t",i);
scanf("%d",&T[i]);
}

while(echange==1)
{
echange=0;
for(i=0; i<=N-1; i++)
if( T[i] > T[i+1] )
{

tmp = T[i];
T[i] = T[i+1];
T[i+1] = tmp;
echange=1;
}

//trie du tableau

}

for(i=0; i<=N-1; i++)
printf("T[%d]=%d",i+1,T[i]);

fflush(stdin);
getchar();
}
rakthh - 6 juin 2011 à 07:49
merci beaucoup tu m'a sauver la vie
Ajouter un commentaire
Réponse
-3
moins plus
oui je cherche à trie en c basic
Ajouter un commentaire
Réponse
-5
moins plus
Regle n°1 : ne JAMAIS réinventer la poudre.

http://www.stlport.org/

Les STL Port sont un groupe de template C++ permettant de gérer les listes, les tri, les streams....

Règle n°2 : faire un grep sur google
http://www.delorie.com/gnu/docs/glibc/libc_143.html

Règle n°3 : Aller je donne la réponse : fonction qsort()
Ajouter un commentaire
Réponse
-5
moins plus
ah joli, un sujet déterré de 4 ans...

Alors déjà on ouvre un autre topic pour commencer.

ensuite la réponse est donnée plus haut en 1 et 2.

Si le code ne te parait pas clair, remet le en forme.

sinon Google sur qsort().

On ne peut pas non plus t'apprendre à progammer, il y a des bouquins pour cela.
Ajouter un commentaire
Ce document intitulé « Débutant en C : trier tableau ? » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?