Operations sur type enum en C

Fermé
thotoss Messages postés 18 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 11 mars 2010 - 27 oct. 2008 à 12:19
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 27 oct. 2008 à 14:46
Bonjour,
Je cherche a effetuer des operations sur un type enum que j'ai defini ainsi :

typedef enum phrase {
"Il fait beau",
"Il pleut",
"Il neige"
};

Voila, une fois le type definie, je voudrais savoir comment comparer 2 valeur du type enum, et comment en initialiser une a la premiere valeur de phrase, c'est a dire "Il fait beau" .

1/
Ainsi j'ai une fonction qui prend obligatoirement en parametre un int, et qui renvoi obligatoirement un char* correspondant a la valeur du type enum en fonction de i :

const char *fonction1(int i);

ainsi si i = 1, const char *fonction(int i) renvoi "Il pleut". Comment faire ?

2/ J'ai un 2e question : meme fonction mais qui renvoi une valeur du type enum :
enum phrase fonction2(int i);

de méme si i=2 , enum phrase fonction2(int i) renvoi "Il neige". Comment faire ?

Merci si vous pouvez m'adier parsque je suis un peu perdu et je ne trouve nulle part une explication !
Cordialement,

7 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
27 oct. 2008 à 12:54
8-/ ça fonctionne comme ça ton enum ???
Pour moi, un enum ne s'utilise pas du tout comme ça !
Si ça compile, je retourne voir mes cour, mais sinon, je te conseil d'aller revoir tes cours.
enum phrase{il_fait_beau=0,var2=1,var3=2};
1
thotoss Messages postés 18 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 11 mars 2010 10
27 oct. 2008 à 13:10
si j'initialise le type enum comme toi, cela me met 2 erreur par ligne a la compilation :
ex :
140: erreur: stray «\303» in program
140: erreur: stray «\251» in program
donc je ne sais pas pourquoi ...
0
thotoss Messages postés 18 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 11 mars 2010 10
27 oct. 2008 à 13:12
ok c'est bon désolé j'ai resolu ce probleme ça compile corrctement avec le type enum bien initialisé !
Mais pour aprés je suis toujours coincé ! Merci si vous pouvez m'aider !
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
27 oct. 2008 à 13:19
pour le reste, je ne sais pas trop, mais je ne pense pas que le type enum soit le mieux adapté à ce que tu veux faire.
Si je comprends bien, tu veux associé un entier à une chaine de caractère.
tu peux faire une tableau :
const char** phrase={"il pleut","il fait beau","il neige"};
fonction1 devient : fonction1(int i){return phrase[i];}.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thotoss Messages postés 18 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 11 mars 2010 10
27 oct. 2008 à 13:23
C'était egalement l'idée que j'avai eu, de passer par un tableau de pointeur char a 2 dimensions, mais l'énoncé est stricte, il faut utiliser un type enum... donc je ne vois pas du tout et je bloque ! merci quans meme ...
0
thotoss Messages postés 18 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 11 mars 2010 10
27 oct. 2008 à 14:11
Personne n'a d'idée pour m'aider svp ????
merci ...
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
27 oct. 2008 à 14:46
avec un enum, moi je passerai par un switch:
switch (i)
case il_fait_beau: return "il fait beau";
case il_neige : return "il neige";
...
Mais je trouve que ça tiens du bourrin, du lourd.
0