Trier un tableau d'enregistrement
Fermé
sam
-
25 oct. 2013 à 17:49
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 29 oct. 2013 à 13:50
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 29 oct. 2013 à 13:50
A voir également:
- Trier un tableau d'enregistrement
- Trier tableau excel - Guide
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
2 réponses
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
25 oct. 2013 à 19:45
25 oct. 2013 à 19:45
Bonjour sam,
"mais le problème est que j'ai pas pu utiliser strcpy pour 2 champs d'un tableau malgré que ces 2 champs sont des chaines de caractères"
La description de ton problème est incompréhensible. On ne peut pas t'aider sans plus de précisions.
Montre la partie de code qui pose problème, explique ce qu'elle devrait faire, ce qu'elle fait, et pourquoi tu penses que tu as "un problème".
Quand tu postes ton code, poste le entre balises <code>, pour qu'il soit lisible. Comme cela :
<code>
Dal
"mais le problème est que j'ai pas pu utiliser strcpy pour 2 champs d'un tableau malgré que ces 2 champs sont des chaines de caractères"
La description de ton problème est incompréhensible. On ne peut pas t'aider sans plus de précisions.
Montre la partie de code qui pose problème, explique ce qu'elle devrait faire, ce qu'elle fait, et pourquoi tu penses que tu as "un problème".
Quand tu postes ton code, poste le entre balises <code>, pour qu'il soit lisible. Comme cela :
<code>
#include <stdio.h></code>
int main(void)
{
printf("Hello world\n";
return 0;
}
Dal
bon voila j fait un tr bulle pour trier le tableau c juse un essai je sais pas si c logique
#include <stdio.h>
struct identite
{
char mot[256];
char fichier[256];
int ligne;
int position_ligne;
};
void tri_bulle(struct identite *tab, int n)
{
int fin_tri;
struct identite echange[1];
int i=0;
{
int fin_tri = 1;
while(i<n)
{
if( strcmp(tab[i].mot,tab[i+1].mot)>0)
{
strcpy(echange.mot,tab[i].mot);
strcpy(echange.fichier,tab[i].fichier);
echange.ligne=tab[i].ligne;
echange.position_ligne=tab[i].position_ligne;
strcpy(tab[i].mot,tab[i+1].mot);
strcpy(tab[i].fichier,tab[i+1].fichier);
tab[i].ligne=tab[i+1].ligne;
tab[i].position_ligne=tab[i+1].position_ligne;
strcpy(tab[i+1].mot,echange.mot);
strcpy(tab[i+1].fichier,echange.fichier);
tab[i+1].ligne=echange.ligne;
tab[i+1].position_ligne=echange.position_ligne;
fin_tri = 0;
}
}while(fin_tri == 0);
}
}
int main()
{
struct identite tableau[3];
tableau[0].mot="asma";
tableau[1].mot="sonia";
tableau[2].mot="hadjer";
tableau[3].mot="celia";
tri_bulle(*tableau,3);
for(i=0,i=3,i++)
{
printf("tab[%d]=%s",i,tableau[i].mot);
}
}
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
Modifié par [Dal] le 29/10/2013 à 13:54
Modifié par [Dal] le 29/10/2013 à 13:54
Désolé de n'être pas revenu vers toi tout de suite.
Il y a beaucoup d'erreurs dans ton code, et il faut s'armer de courage (et de temps) pour te répondre utilement.
- si ton tableau de struct a 4 éléments, tu dois le déclarer avec 4 éléments :
- tu ne peux pas faire
- comme
- pour ta fonction,
- ta déclaration de echange devra être simplement :
- tes boucles ne vont pas. Fais un do / while pour contrôler si as toujours des bulles, et une simple boucle for à l'intérieur pour parcourir le tableau
- pour permuter le contenu de struct en C, tu peux simplement les affecter. Par exemple :
stp, avant de poster du code, essaye avant de le compiler avec tous les warnings (avec gcc l'option -Wall est déjà un bon début), et corrige toutes les erreurs de syntaxe empêchant la compilation, et comprend la raison des warnings émis par le compilateur et fais ce qu'il faut pour y remédier et faire taire tous les warnings. Si tu ne sais pas comment les corriger, vois ton cours de C, un manuel, cherche par toi même, et si tu n'y arrives pas pose la question ici :-)
Dal
Il y a beaucoup d'erreurs dans ton code, et il faut s'armer de courage (et de temps) pour te répondre utilement.
- si ton tableau de struct a 4 éléments, tu dois le déclarer avec 4 éléments :
struct identite tableau[4];et non 3.
- tu ne peux pas faire
tableau[0].mot = "asma";pour affecter une chaîne. Tu dois utiliser la fonction strcpy et inclure string.h. Comme cela :
strcpy(tableau[0].mot, "asma");
- comme
tableauest un tableau,
tableauest déjà un pointeur. C'est un pointeur vers le premier élément du tableau. Donc, ton appel à tri_bulle devrait être :
tri_bulle(tableau, 4);(et c'est 4 éléments qui sont contenus, pas 3)
- pour ta fonction,
void tri_bulle(struct identite *tab, int n)est un prototype correct
- ta déclaration de echange devra être simplement :
struct identite echange;car tu ne veux là qu'un seul struct
- tes boucles ne vont pas. Fais un do / while pour contrôler si as toujours des bulles, et une simple boucle for à l'intérieur pour parcourir le tableau
- pour permuter le contenu de struct en C, tu peux simplement les affecter. Par exemple :
echange = tab[i];, inutile d'affecter les membres de la struc un par un
stp, avant de poster du code, essaye avant de le compiler avec tous les warnings (avec gcc l'option -Wall est déjà un bon début), et corrige toutes les erreurs de syntaxe empêchant la compilation, et comprend la raison des warnings émis par le compilateur et fais ce qu'il faut pour y remédier et faire taire tous les warnings. Si tu ne sais pas comment les corriger, vois ton cours de C, un manuel, cherche par toi même, et si tu n'y arrives pas pose la question ici :-)
Dal