Problem de trier un tableau en langage c

soumia91 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
asrion Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

6 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Salut,
Donne le code que t'as fait pour qu'on puisse t'aider ;-)).
Cdlt
1
soumia91
 
mais j'avais aucune idée pour trier un tableau si pour ça je vous de monder de me aider
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Ben ton exercice donne la méthode pourtant. C'est quoi que tu ne comprends pas ?
0
soumia91
 
vous pouvez me donner le programme correspondant a cet exercice
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846 > soumia91
 
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.
0
loupius > fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention  
 
Depuis le début, je sentais qu'il voulait se coincer la bulle ;-)))
0
soumia91 > loupius
 
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
0
ayoub
 
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();

}
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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.
0
soumia91
 
mais comment je peut chercher le plus petit élément d'ans un tableau et quel est le code correspondant?
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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.
0
soumia91
 
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
0

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

Posez votre question
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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é ^^.
0
qwemour Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
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;
}

}
}
0
asrion Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Voici ma solution à vous proposer, avec un bloc de if en moins
et le tableau marche pour toutes sortes de tailles (dynamique)

int main(int argc, char *argv[]){

//Ordonner Tableau
//exemple
int tableau[] = {50, 75, 85, 98, 125, 15, 81, 22, 13 };
int tailleTableau= sizeof tableau / sizeof *tableau;

printf("\nApercu tableau initiale \n");
for(i=0; i < tailleTableau; i++){
printf(" %d ", tableau[i]);
}

ordonnerTableau(tableau, tailleTableau);
printf("\n Apercu tableau trié ou ordonné \n");
return 0;
}

void ordonnerTableau(int tableau[], int tailleTableau){
int i =0, j = i+1, min = 0, k = 0;
int limite = tailleTableau - 1;

for(i=0; i < limite; i++){
min = tableau[i];
for(j=i+1; j < tailleTableau; j++){
if(min > tableau[j]){
min = tableau[j];
k = j;
tableau[k] = tableau[i];
tableau[i] = min;
}
}
}
}
0
asrion Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Même code presque pour le tri décroissant
en changeant cette ligne de code
if(min > tableau[j]){
et qui devient
if(min < tableau[j]){
et vous aurez le tri décroissant ,)
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Attention au déterrage de topic... Celui-ci date de 3 ans...
Sinon, lorsque tu postes un code, merci d'utiliser la balise <code c>.
Exemple :
<code c>
/*tu mets ton code ici*/
</code>
Ainsi, ça sera plus lisible.
0
asrion Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   > fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention  
 
Merci fiddy pour le conseil sur les balises
et oui je n'avais pas remarqué la date du topic :p
0