Posez votre question Signaler

Problem de trier un tableau en langage c

soumia91 6Messages postés jeudi 2 avril 2009Date d'inscription 5 mars 2011Dernière intervention - Dernière réponse le 19 oct. 2012 à 01:59
Bonjour,
j'ai un grande problème en langage c car je ne savais pas la méthode de trier un tableau et je vous donner l'énoncer de l'exercice telle qui les :
ecrire un programme qui ordonne(trie) les élément d'un tableau, en utilisant la méthode suivante:
-une première boucle parcourt le tableau et se positionne sur l'élément i de celui-ci .
-recherchez a partir de cet élément et jusqu'à la fin du tableau la plus petite valeur. échangez cette plus petite valeur avec la valeur a la position i.
-avancez d'une position dans votre première boucle. les éléments avant cette nouvelle position sont triés et vous ne devez plus y toucher.
s.v.p aidez moi car je suis très besoin de la solution.
merci avant tous.
Lire la suite 
Réponse
+1
moins plus
Salut,
Donne le code que t'as fait pour qu'on puisse t'aider ;-)).
Cdlt
soumia91- 2 avril 2009 à 22:09
mais j'avais aucune idée pour trier un tableau si pour ça je vous de monder de me aider
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Ben ton exercice donne la méthode pourtant. C'est quoi que tu ne comprends pas ?
fiddy 10277Messages postés samedi 5 mai 2007Date d'inscription ContributeurStatut 19 avril 2015Dernière intervention - 2 avril 2009 à 22:50
donner le programme correspondant a cet exercice
Ce que tu demandes est hors-charte ;-)).
Dis-nous ce que tu ne comprends pas ou fais le début de programme, sinon on ne peut pas aider.
Répondre
loupius- 2 avril 2009 à 23:07
Depuis le début, je sentais qu'il voulait se coincer la bulle ;-)))
Répondre
soumia91- 2 avril 2009 à 23:26
j'ai trouver le programme suivant:
#include<stdio.h>
main()
{
int n;
int tab[n];
int i,j,k,m;
printf("donner le nombre d'éléments de ce tableau\n");
scanf("%d",&n);
for(i=0;i<n;i++);
{
printf("donner une valeur \n");
scanf("%d",&tab[i]);
}
for(j=0;j<n;j++)
{
for(k=n;k<=j+1;k++)
{
if(tab[k-1]>tab[k])
{
m=tab[k-1];
tb[k-1]=tab[k]
tab[k]=m;
}
}
}
}
mais ça marche pas
aider mis s.v.p
Répondre
ayoub- 26 mars 2011 à 21:02
Si tu vx la bonne reponse essaie ce code là

#include<stdio.h>
int n,echg,i,j;
char rep;
main()
{
do
{
system("cls");
printf("Entrez leNombre de case pour le tableau: ");
scanf("%d",&n);
printf("Entrez tous les elements du Tableau: \n");
int T[n];
for(i=0;i!=n;i++)
{
scanf("%d",&T[i]);
}
for(i=0;i!=n;i++)
{
for(j=0;j!=n;j++)
{
if (T[i]<T[j])
{
echg = T[j];
T[j] = T[i];
T[i] = echg;
}
}
}
system("cls");
printf("Les elements du tableau Sont comme suit: \n");
for(i=0;i!=n;i++)
{
printf("%d ",T[i]);
}
printf("\n\nVoulez-Vous Recommencer ?\n\n\t\t==> ");
scanf("%s",&rep);

}
while((rep=='o') || (rep=='O') || (rep=='y') || (rep=='Y'));

printf("\n\n\n\n\n\t\tA bientot ^^ !!\n");
getch();

}
Répondre
fiddy 10277Messages postés samedi 5 mai 2007Date d'inscription ContributeurStatut 19 avril 2015Dernière intervention - 26 mars 2011 à 21:26
Tu remontes un poste datant de 2 ans en apportant un code truffé de mauvaises pratiques et avec quelques erreurs.
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Ce programme (copier de je ne sais où) ne respecte même pas la consigne et en plus il est faux ^^.

recherchez a partir de cet élément et jusqu'à la fin du tableau la plus petite valeur. échangez cette plus petite valeur avec la valeur a la position i.
Ta deuxième boucle for et ton if ne respecte donc pas la consigne.

De plus :

int n;
int tab[n];

n n'est pas initialisée lors de la déclaration du tableau. Il faut l'initialiser.
soumia91- 2 avril 2009 à 23:46
mais comment je peut chercher le plus petit élément d'ans un tableau et quel est le code correspondant?
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Salut,
Tu mémorises le premier élément dans une variable min. Tu parcours le tableau avec une boucle for. Si l'élément est plus petit que min, alors min devient l'élément en question.
A la fin de la boucle, la variable min est le minimum du tableau.
soumia91- 3 avril 2009 à 00:24
j'ai trouver sur un site le programme suivant:
#include <stdio.h>

/* La fonction de permutation
Arguments :
tab : le tableau dans lequel il faut permuter deux elements
i : l'indice du premier element a permuter
j : l'indice du deuxieme element a permuter
Resultats : aucun
La fonction est purement utilitaire et ne sert qu'a alleger le code du tri
*/
void permute (int tab[], int i, int j) {
int temp; /* un variable temporaire */

/* permutation des elements d'indices i et j */
temp = tab[i];
tab[i] = tab[j];
tab[j] = temp;
}

/* La fonction de tri croissant
Arguments :
tab : le tableau a trier dans l'ordre croissant
taille : le nombre d'elements dans le tableau
Resultats : aucun
*/
void tritab (int tab[], int taille) {
int i; /* indice du premier element de la partie non encore triee du tableau */
int j; /* indice utilise pour parcourir la partie non triee a la recherche du plus petit element */
int min; /* indice du plus petit element dans la partie non triee */

/* tout le tableau doit etre trie
au depart, la partie triee est vide et la partie non triee couvre tout le tableau
le premier element de la partie non triee a donc l'indice 0
*/
for (i = 0; i < taille; i++) {

/* recherche du plus petit element de la partie non triee */
min = i;
for (j = i + 1; j < taille; j++) if (tab[j] < tab[min]) min = j;

/* s'il y a un element plus petit que le premier de la partie non triee, on permute */
if (i != min) permute(tab, i, min);
}
}

/* Le programme de test */
int main () {
int tab[10]; /* Un tableau utilise pour le test */
int i; /* Un indice utilise pour le parcours du tableau */

/* Demande et lecture des valeurs initiales des elements du tableau */
for (i = 0; i < 10; i++) {
printf("Introduire tab[%d] : ", i);
scanf("%d", &(tab[i]));
}

/* Affichage des valeurs des elements du tableau avant le tri */
printf("Avant le tri:\n");
for (i = 0; i < 10; i++) {
printf("tab[%d] : %d\n", i, tab[i]);
}

/* Tri du tableau */
tritab(tab, 10);

/* Affichage des valeurs des elements du tableau apres le tri */
printf("Apres le tri:\n");
for (i = 0; i < 10; i++) {
printf("tab[%d] : %d\n", i, tab[i]);
}
}
je pense que c'est la solution de mon exercice
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Effectivement et commenté en plus. T'as de la chance qu'internet soit riche d'information ;-))).
Il manque juste le petit return 0; dans le main et t'auras une bonne note sans avoir travaillé ^^.
Ajouter un commentaire
Réponse
+0
moins plus
voila un code qui trie un tableau de manière croissant en langage C:
---------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>

void trier(int table[],int taille);



int main(int argc, char *argv[])
{
long tab[6] = {150,-83,112,231,5,12};

int i=0;

trier(tab,6);

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

void trier(int table[],int taille)
{
int i,j,min,d=0;
for(i=0;i<taille-1;i++)
{
min=table[i];
for(j=i+1;j<taille;j++)
{
if(table[j]<min)
{
min=table[j];
d=j;
}
}
if(table[i]!=min)
{
table[d]=table[i];
table[i]=min;
}

}
}
Ajouter un commentaire
Ce document intitulé «  problem de trier un tableau en langage c  » 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.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.