Tri alphabetique probleme
Résolu
Bonjour,
j'ai créé un programme en C mais j'ai un petit soucis avec le tri par ordre alphabétique, voici mon code:
// Definition de la structure
struct article
{
int reference;
char designation[50];
float prix;
int quantite;
};
void tri_tableau_designation (struct article solde[],int n)
{
int i;
struct article temp;
for (i=0; i<n; i++)
{if (strcmp(solde[i].designation,solde[i+1].designation)>0) //tri 2 elements (chaines) d'une structure
{temp=solde[i];
solde[i]=solde[i+1];
solde[i+1]=temp;
i=0;
printf("/n%d",i);
}
}
printf("Voici le stock du magasin avec les articles soldes et tries alphabetiquement:\n\n");
affiche_tableau_article(solde,n);
}
en fait je voudrais qu'il me tri par ordre laphabétiques des structures articles mais voila ce qu'il me fait:
reference: 001
designation: Article1
prix: 32.00
quantite: 200
reference: 00
designation:
prix: 00.00
quantite: 0
il me met automatiquement la 2eme a 0
comment corriger cela?
merci
PS: pas d'erreur de compilation (je suis debutant)...
j'ai créé un programme en C mais j'ai un petit soucis avec le tri par ordre alphabétique, voici mon code:
// Definition de la structure
struct article
{
int reference;
char designation[50];
float prix;
int quantite;
};
void tri_tableau_designation (struct article solde[],int n)
{
int i;
struct article temp;
for (i=0; i<n; i++)
{if (strcmp(solde[i].designation,solde[i+1].designation)>0) //tri 2 elements (chaines) d'une structure
{temp=solde[i];
solde[i]=solde[i+1];
solde[i+1]=temp;
i=0;
printf("/n%d",i);
}
}
printf("Voici le stock du magasin avec les articles soldes et tries alphabetiquement:\n\n");
affiche_tableau_article(solde,n);
}
en fait je voudrais qu'il me tri par ordre laphabétiques des structures articles mais voila ce qu'il me fait:
reference: 001
designation: Article1
prix: 32.00
quantite: 200
reference: 00
designation:
prix: 00.00
quantite: 0
il me met automatiquement la 2eme a 0
comment corriger cela?
merci
PS: pas d'erreur de compilation (je suis debutant)...
A voir également:
- Tri alphabetique probleme
- Comment trier par ordre alphabétique sur excel - Guide
- Logiciel tri photo - Guide
- Triez ce tableau par ordre alphabétique des prénoms. ✓ - Forum Excel
- Peut on récupérer un colis au centre de tri chronopost - Forum Consommation & Internet
- Logiciel répertoire alphabétique gratuit - Télécharger - Bureautique
5 réponses
Bonjour,
Il faudrait un minimum chercher surtout que ces fonctions sont très bien documentées :
http://www.cplusplus.com/reference/cstdlib/qsort/
Definir d'abord la fonction de comparaison :
puis pour trier tu mets cette ligne dans ton code :
Voilà !
Il faudrait un minimum chercher surtout que ces fonctions sont très bien documentées :
http://www.cplusplus.com/reference/cstdlib/qsort/
Definir d'abord la fonction de comparaison :
int compareAlphaArticles(const void * article1, const void * article2) {
return strcmp(((struct Article*)article1)->designation , ((struct Article*)article2)->designation);
}
puis pour trier tu mets cette ligne dans ton code :
qsort(tableauDArticles, longueurTableau, sizeof(struct Article), compareAlphaArticles);
Voilà !
Je te propose soit d'utiliser la fonction qsort si tu reste en C, soit d'utiliser un std::set si tu fais du C++.
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/qsort.3.html
http://www.lri.fr/~aze/page_c/aide_c/show_xml.php?file=qsort.xml
Bonne chance
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/qsort.3.html
http://www.lri.fr/~aze/page_c/aide_c/show_xml.php?file=qsort.xml
Bonne chance
Bonjour,
je souhaiterais utiliser qsort mais je ne comprend pas bien la syntaxe...
je voudrais comparer 2 chaines de caractère issue d'une structure:
struct article
{
int reference;
char designation[50];
float prix;
int quantite;
};
reference: 001
designation: Article1
prix: 32.00
quantite: 200
reference: 002
designation: Article 2
prix: 12.45
quantite: 12
comparer ici Article1 et Article2 et les placer par ordre alphabétique
pouvez vous m'indiquer seulement de facon plus clair que la doc la syntaxe (ex: qsort (chaine1,chaine2,...))
car j'ai tester cette ligne mais le programme plante (pas d'erreur de compilation):
{if (qsort(2,(solde[i].designation,solde[i+1].designation))>0)
PS: je ne connait pas la taille des chaine, seulement la longueure max: 50
merci!
je souhaiterais utiliser qsort mais je ne comprend pas bien la syntaxe...
je voudrais comparer 2 chaines de caractère issue d'une structure:
struct article
{
int reference;
char designation[50];
float prix;
int quantite;
};
reference: 001
designation: Article1
prix: 32.00
quantite: 200
reference: 002
designation: Article 2
prix: 12.45
quantite: 12
comparer ici Article1 et Article2 et les placer par ordre alphabétique
pouvez vous m'indiquer seulement de facon plus clair que la doc la syntaxe (ex: qsort (chaine1,chaine2,...))
car j'ai tester cette ligne mais le programme plante (pas d'erreur de compilation):
{if (qsort(2,(solde[i].designation,solde[i+1].designation))>0)
PS: je ne connait pas la taille des chaine, seulement la longueure max: 50
merci!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question