IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

[debutant]Enumerations et structures


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2006
    Messages : 33
    Par défaut [debutant]Enumerations et structures
    Bonsoir,

    Après de nombreuses recherhces sur le site ou dans mes cours, je ne trouve pas la solution à mon probleme...
    Comme souvent, je m'en remet à vous...

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    enum modele{clio=1,twingo,laguna,safrane,espace};
    enum couleur{jaune=1,rouge,bleu,noir,blanc};
     
    struct vehicule
    {
           modele model[10];
           couleur coul[10];
           int puissance;
    };
     
    struct vehicule voiture1;
     
    int main(void)
    {
    voiture1.model="clio";
    voiture1.coul="rouge";
    voiture1.puissance=90;
    printf("Vehicule 1 : Modele : %s de couleur %s.\n",voiture1.model,voiture1.coul);
    printf("Sa puissance est de %d chevaux\n",voiture1.puissance);
    system("PAUSE");
    }
    Je souhaite simplement attribuer les valeurs "clio" et "rouge" présentent dans les énumérations à la voiture1.
    Comment faire ?

    Si vous pouvez éclairer ma petite lanterne

  2. #2
    Membre émérite
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Par défaut
    Salut,

    Les énumérations ne permettent pas d'afficher du texte... Leur fonctionnement est similaire à celui du #define, mais avec beaucoup plus de clarté dans le code.

    Voici ton programme corrigé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    enum modele { clio, twingo, laguna, safrane, espace };
    enum couleur { jaune, rouge, bleu, noir, blanc };
     
    struct vehicule {
    	enum modele model;
    	enum couleur coul;
    	int puissance;
    };
     
    int
    main (void)
    {
    	struct vehicule voiture1;
     
            char *s_modele[] = {"Clio", "Twingo", "Laguna", "Safrane", "Espace"};
            char *s_couleur[] = {"jaune", "rouge", "bleu", "noir", "blanc"};
     
    	voiture1.model = clio;
    	voiture1.coul = rouge;
    	voiture1.puissance = 90;
     
    	printf("Vehicule 1 : Modele : %s de couleur %s.\n", s_modele[voiture1.model], s_couleur[voiture1.coul]);
    	printf("Sa puissance est de %d chevaux\n", voiture1.puissance);
    	system("PAUSE");
     
            return 0;
    }
    Si tu as des questions...

    Edit : code corrigé.

  3. #3
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Quelque corrections....

    Citation Envoyé par Freed0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    enum modele { clio, twingo, laguna, safrane, espace };
    enum couleur { jaune, rouge, bleu, noir, blanc };
    
    struct vehicule {
    	enum modele model;
    	enum couleur coul;
    	int puissance;
    };
    
    int
    main (void)
    {
    	struct vehicule voiture1;
    
            char *s_modele[] = {"Clio", "Twingo", "Laguna", "Safrane", "Espace"};
            char *s_couleur[] = {"jaune", "rouge", "bleu", "noir", "blanc"};
    	
    	voiture1.model = clio;
    	voiture1.coul = rouge;
    	voiture1.puissance = 90;
    	
    	printf("Vehicule 1 : Modele : %s de couleur %s.\n", s_modele[voiture1.model], s_couleur[voiture1.coul]);
    	printf("Sa puissance est de %d chevaux\n", voiture1.puissance);
    	return 0;
    }

  4. #4
    Membre émérite
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Par défaut
    Ah oui, j'avais remarqué l'oubli, avais corrigé dans mon IDE, mais pas dans le post. Merci pour la correction

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2006
    Messages : 33
    Par défaut
    Ta réponse me trouble un peu, non pas qu'elle soit fausse (quoique, il fallait mettre %s à la place de %d ) mais du coup je ne comprend plus trop l'utilité de mettre des énumérations.

    Un tableau de caracteres donnerai le meme resultat...
    Est-ce que je me trompe ?

    Du coup quel est l'interet des enumerations...???

  6. #6
    Membre émérite
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Par défaut
    Pour moi, leur principale utilité est d'éviter des lignes et des lignes de #define. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #define BUFF_WRITE 0
    #define BUFF_READ 1
    #define BUFF_TIMEOUT 2
    #define BUFF_ERROR 3
    pourrait être simplifié en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enum status_e { BUFF_WRITE, BUFF_READ, BUFF_TIMEOUT, BUFF_ERROR };
    Il y a sans doute d'autres utilités, mais il faut dire que j'utilise très peu (pas) les énumérations.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2006
    Messages : 33
    Par défaut
    Merci pour tes réponses...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DEBUTANT] XML vérification structure
    Par erigoal dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 29/01/2009, 15h50
  2. Réponses: 7
    Dernier message: 26/04/2006, 09h56
  3. Réponses: 4
    Dernier message: 10/04/2006, 09h28
  4. [MFC][debutant] probleme pour déclarer une structure
    Par Robleplongeur dans le forum MFC
    Réponses: 10
    Dernier message: 21/02/2005, 13h29
  5. [débutant][Conception] Structure dynamique avec Java
    Par blaiseac dans le forum Général Java
    Réponses: 5
    Dernier message: 18/11/2004, 23h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo