Math1004
Messages postés15Date d'inscriptionmercredi 10 octobre 2007StatutMembreDernière intervention 2 mai 2009
-
5 déc. 2007 à 19:38
julienbj
Messages postés452Date d'inscriptionjeudi 4 décembre 2003StatutMembreDernière intervention19 décembre 2008
-
7 déc. 2007 à 11:37
En bref je voudrais pouvoir me servir d un parametre de variable en tant que variable , ou je ne sais trop quel solution :
Exemple : Je possede une structure ou il y a le nom et le prenom . Je souhaite effectué un affichage par ordre alphabetique soit par nom soit par prenom . Etant donné que l algo a effectué est le meme je voudrais pouvoir avoir une fonction "generique" . ( je sais pas trop comment m expliqué :s )
je voudrais obtnir quelque chose du type :
void affichageTrié( Personne , Mot )
{
printf("%s", Personne[1].Mot); // Selon le mot il accede a MaStructure[i].Nom ou MaStructure[i].Prenom
}
int main( )
{
affichageTrié(MaStructure , "Nom" ) // pour faire un affichage trié par Nom
affichageTrié(MaStrucutre, "Prenom") // pour faire un affichage trié par Prenom avec la meme fonction
}
Voila j espere que c est plus clair avec ca . Je veux pas d explication pour faire l algorithme de tri ( globalement je vois comment faire sans trop de probleme ).
Merci pour votre aide :)
Math1004
Messages postés15Date d'inscriptionmercredi 10 octobre 2007StatutMembreDernière intervention 2 mai 2009 5 déc. 2007 à 19:42
Bon je trouve pas comment edité donc bon ^^ dans le main ( ) c est pas vraiment MaStructure c est plutot MonTableauDeStructure . ( Ptite precision pour essayé de rendre comprehensible au maximum ce que je veux ^^ )
Math1004
Messages postés15Date d'inscriptionmercredi 10 octobre 2007StatutMembreDernière intervention 2 mai 2009 5 déc. 2007 à 20:09
oui je c est que ca ne marche pas ce que j ai ecrit.
C'etait pour essayer d explique ce que je veux faire .
En gros j ai fait une fonction qui tri tous les gens de mon tableau de structure par nom et qui m affiche par ordre alphabetique de nom la strucutre entiere . Puis une seconde fonction qui affiche mon tableau de structure par ordre alphabetique de prenom de la strucutre entiere .
En gros si j ai la 1ere personne qui s appelle Pierre Aad
et la 2eme personne qui s appelle Paul Brrih.
Quand j appel ma fonction qui tri par nom elle va m ecrire Pierre Aad puis Paul Brrih . Et si j appelle ma fonction qui tri par prenom elle va m ecrire Paul Brrih puis Pierre Aad . Le truc c que l algorithme c est exactement le meme pour le nom et le prenom . La seul chose qui change c est que mes conditions sur la 1ere fonction porte sur MaStructure.Nom et la 2eme sur MaStrucutre.Prenom . Donc je cherche un moyen pour passé un parametre a la fonction et que ma fonction travaille sur MaStructure.X ou X serait le parametre que je lui donne .
Voila j essaye d etre clair mais c pas facil :s
Neo_Fr
Messages postés653Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention10 novembre 20142 5 déc. 2007 à 20:13
Je comprend pas ou est ton pb, tu as juste a passer un pointeur a ta fonction, ainsi tu pourras acceder a tt les membres de ta structure depuis ta fonction.
Neo_Fr
Vous n’avez pas trouvé la réponse que vous recherchez ?
Math1004
Messages postés15Date d'inscriptionmercredi 10 octobre 2007StatutMembreDernière intervention 2 mai 2009 5 déc. 2007 à 20:59
Non mais le probleme n est pas pour accedé a ma structure .
En gros pour le moment j ai une fonction qui s appelle affichageTriNom et une fonction affichageTriPrenom.
La premiere fais des tris selon les valeurs de MaStruct[i].Nom et la 2eme selon les valeurs de MaStruct[i].Prenom .
Mais effectué un tri alphabetique que se soit pour le nom ou le prenom c exactement le meme algorithme en faite c est juste le champ de ma structure qui est different . Donc ce que je voudrais faire pour allegé mon code c de reussir a faire passé un parametre qui indique si je fais mon tri sur le nom ou prenom du genre je te passe X et tu travail sur MaStruct[i].X où X est soit le nom si je lui ai fourni le nom soit le prenom si je lui fourni le prenom en parametre . Voila j espere etre clair cette fois ci
Math1004
Messages postés15Date d'inscriptionmercredi 10 octobre 2007StatutMembreDernière intervention 2 mai 2009 6 déc. 2007 à 19:28
__offsetof__ was not declared in this scop :s j ai recopier ce que tu a mis en incluant #include <stddef.h> #include <stdio.h> et cela ne marche pas :-( deja que je n ai jamais fait/utilisé de macro :s la me sors une erreur que je ne comprend meme pas :(
julienbj
Messages postés452Date d'inscriptionjeudi 4 décembre 2003StatutMembreDernière intervention19 décembre 200815 6 déc. 2007 à 22:40
Oups...
Il y a une erreur dans le code que je t'ai mis ci-dessus:
void main(void)
{
PERSONNE foo = {"Test", "Un Deux Trois"};
display(&foo, offsetof(PERSONNE, nom)); //Manquait une )
display(&foo, offsetof(PERSONNE, prenom)); //Manquait une )
}
Testé sous VS2005 express, et VS6, pas de problème
Math1004
Messages postés15Date d'inscriptionmercredi 10 octobre 2007StatutMembreDernière intervention 2 mai 2009 6 déc. 2007 à 22:57
ahh merci ca marche sous devc++ . bon ba je vais essayé de me servir de ca pour faire tous mes tris avec une seul fonction ( meme si je vois pas encore a quoi sa va me servir enfaite mais bon ^^ ) mercii et je vous repond si j y arrive pas ^^.
julienbj
Messages postés452Date d'inscriptionjeudi 4 décembre 2003StatutMembreDernière intervention19 décembre 200815 7 déc. 2007 à 11:37
Ca va te permettre d'avoir une fonction unique pour trier sur des chaines de caractères.
Au lieu de lui passer le nom de l'élement sur lequel trier (ce qui est impossible), tu lui passes l'offset de l'élément dans ta structure.
Comme ça, une seule fonction, et un tri sur l'éléement placé en telle position dans la strucutre. Attention cependant, il n'y a pas de vérification de type. Tu dois bien faire attention de trier sur des chaines de carctères!