Problem de trier un tableau en langage c
soumia91
Messages postés
8
Statut
Membre
-
asrion Messages postés 4 Statut Membre -
asrion Messages postés 4 Statut Membre -
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.
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.
Configuration: Windows XP Firefox 3.0.8
6 réponses
-
Salut,
Donne le code que t'as fait pour qu'on puisse t'aider ;-)).
Cdlt -
Ben ton exercice donne la méthode pourtant. C'est quoi que tu ne comprends pas ?
-
-
-
-
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 -
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();
}
-
-
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. -
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.-
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
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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é ^^. -
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;
}
}
}-
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;
}
}
}
} -
-
-