begin process at 2012 05 30 01:29:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Parametres=> Variables


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Parametres=> Variables

mercredi 5 décembre 2007 à 19:38:51 | Parametres=> Variables

Math1004

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 :)

mercredi 5 décembre 2007 à 19:42:23 | Re : Parametres=> Variables

Math1004

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 ^^ )
mercredi 5 décembre 2007 à 19:54:09 | Re : Parametres=> Variables

Neo_Fr

Membre Club
C'est impossible de faire ce que tu fais.. Fait plutot comme ca: #define NOM 1 #define PRENOM 2 typedef struct _mastruct { char* Nom; char* Prenom; }MASTRUCT, *LPMASTRUCT; void affichageTrie(LPMASTRUCT lpMaStruct, int Membre) { switch(Membre) { case NOM: printf("%s", lpMaStruct->Nom); break; case PRENOM: printf("%s", lpMaStruct->Prenom); break; } } int main(void) { MASTRUCT MaStruct; MaStruct.Nom = "Mon Nom\0"; MaStruct.Prenom = "Mon Prenom\0"; affichageTrie(&MaStruct, NOM); affichageTrie(&MaStruct, PRENOM); system("PAUSE"); return 0; } Neo_Fr
mercredi 5 décembre 2007 à 20:09:33 | Re : Parametres=> Variables

Math1004

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
mercredi 5 décembre 2007 à 20:13:59 | Re : Parametres=> Variables

Neo_Fr

Membre Club
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
mercredi 5 décembre 2007 à 20:59:10 | Re : Parametres=> Variables

Math1004

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

mercredi 5 décembre 2007 à 23:54:44 | Re : Parametres=> Variables

julienbj

Regarde du côté de offsetof.
C'est une macro qui te donne l'offset d'un membre de ta structure.

Tu pourrais faire un truc du genre (dans l'idée):

typedef struct
{
    char *nom;
    char *prenom;
} PERSONNE;

void display(PERSONNE *pers, int offset)
{
    char *item;

    item = *((char**) (((int) pers) + offset));
    printf("%s\n", item);
}

void main(void)
{
    PERSONNE foo = {"Test", "Un Deux Trois"};
    display(&foo, offsetof(PERSONNE, nom);
    display(&foo, offsetof(PERSONNE, prenom);
}

Pour la fonction de tri, ben c'est la même chose.

--
Vive le C
Développeur hard/soft pour AGILiCOM
Savon
jeudi 6 décembre 2007 à 19:28:22 | Re : Parametres=> Variables

Math1004

__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 :(
jeudi 6 décembre 2007 à 22:08:45 | Re : Parametres=> Variables

julienbj

#define offsetof(s,m)   (size_t)&(((s *)0)->m)

Sinon, peux-tu me dire sous quel environnement tu travailles.

--
Vive le C
Développeur hard/soft pour AGILiCOM
Savon
jeudi 6 décembre 2007 à 22:40:56 | Re : Parametres=> Variables

julienbj

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

--
Vive le C
Développeur hard/soft chez AGILiCOM
Savon

1 2

Cette discussion est classée dans : mot, affichage, trop, prenom, affichagetrié


Répondre à ce message

Sujets en rapport avec ce message

Affichage trop rapide [ par malik7934 ] Hello,Je reviens à la charge avec une question que j'ai déjà posé mais pour laquelle j'ai pas eu de réponse qui me permette de progresser...Mon prog f trop besoin d'aide ! je ny arrive pas [ par flowneo ] bonjour, pouvez vous m'aider ? en faite j'ai un programme à faire, un programme qui doit dire si les lettres d'un mot sont bien placé ou pas par rapp jeu motus: affichage du mot tapé [ par janyoura ] J'ai besoin de faire l'affichage du mot tapé par l'utilisateur dans les cases correspondantes, chaque lettre dans une case de la matrice. j'ai pris ex affichage trop rapide [ par malik7934 ] Hello,J'ai un prog qui affiche dans une editbox les calculs qu'il fait (verbose). J'emploie la méthode suivante: strcat((char*)verboseText,"TEXTE A A display font / affichage de font [ par buno ] Hello!I'm a developper in a software kernel team and I have to display Unicode character on a mobile screen using font file.How do to this properly?Th Pb d'affichage de bitmap avec Visual C++ 6.0 [ par nick92 ] Bonjour,J'ai un petit soucis, je crée une fenêtre de login avec sur la gauche un dessin bitmap, dans la partie creation des ressources du compilateur, programme curseur [ par bassemamara1984 ] bonjour dans mon programme je veut afficher des image alors j'ai charger 4 image pour faire apparaitre un carré sur mon programme vous saver que pour analyseur lexical en C [ par janyoura ] salut je suis chargée de faire un analyseur lexical développé en langage C, j'arrive pas à faire un plan pour mon travail, les principaux structures exercice d'algo [ par Mjblue ] int chainehsrd( int i; int N; char Mot=''; char Mot[255]; int E=97; char L=(char)E) { for (i=0; i< char Mot[255]-1; i++) Affichage de temperature par 16F877 [ par hasnipsr700 ] Salut, je veux afficher(par PIC 16F877) la température de 4 sondes LM35 sur un afficheur lcd, la premiere ligne indique la sonde et la deuxieme ligne


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,293 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales