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 :

Problème énumération tableau


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 5
    Par défaut Problème énumération tableau
    Bonjour, je voudrais savoir comment est-il possible de créer un tableau dont les valeurs sont celles d'un type énuméré...
    Par exemple : créer un tableau T de type énuméré couleur{bleu,blanc,rouge} : | bleu | blanc | blanc| bleu | rouge | bleu | rouge |

    En gros mon problème c'est que je ne vois pas comment accéder à un élément du type énuméré. N'y a-t-il pas un moyen d'y accéder comme dans un tableau en faisant quelque chose du genre nomvariable.valeur ???

    Merci

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Une énumération n'est pas une collection de valeurs mais, comme son nom l'indique, une liste de constantes chacune désignant symboliquement une valeur. Il n'y a pas donc de syntaxe pour accéder à un membre d'une énumération (ce qui n'a pas de sens puisqu'elle n'est pas une collection).

    Les constantes enumération ont le type int. On peut donc les utiliser comme des int.

    L'intérêt d'un type enumération est de spécifier au lecteur que la valeur doit être l'une des constantes énumération et non n'importe quelle valeur int. Attention, le C ne vérifiera pas qu'une valeur int correspond à une des constantes énumération.

    Quelques exemples pour illustrer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      typedef enum{Bleu, Blanc, Rouge} Couleur;
      int Tab1[3] = {Bleu,Blanc,Rouge};
      int Tab2[3] = {0,1,2};
      Couleur Tab3[3] = {Bleu,Blanc,Rouge};
      Couleur Tab4[3] = {0,1,2};
     
      Tab1[Bleu] = -1;   // pourquoi pas ?
      Tab3[1] = Rouge;   
      // plutot que Tab3[1] = 2 puisque Tab3 est un tableau de Couleur
     
      Tab3[Bleu] = Tab1[0]; 
    // On met un entier dans un tableau de Couleur. Soit. Mais, le lecteur croit que cet entier
    // est une Couleur et on le trompe !!!

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 5
    Par défaut
    ok merci

    Encore une petite question : comment fait-on pour afficher un tableau de la forme :

    | bleu | bleu | blanc | rouge |

    en fait, voici mon code, pouvez-vous me dire si il est juste, et comment afficher le tableau de couleur ? Merci voila 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
    26
    27
    28
    29
    30
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    void main()
    {
        typedef enum{bleu,blanc,rouge} couleur;
        srand((unsigned)time(NULL));
        int i,n,p;
     
        printf("Saisissez le nombre de valeurs : ");
        scanf("%d",&n);
     
        couleur t[n];
     
        for(i=0;i<n;i++);
        {
            p = rand()%3;
     
            switch(p)
            {
                case 0 : t[i] = bleu;break;
                case 1 : t[i] = blanc;break;
                case 2 : t[i] = rouge;break;
                default : printf("erreur");break;
            }
            printf("%d |",t[i]); //je ne vois pas comment afficher la couleur qui correspond à 0,1 ou 2...
        }
    }

  4. #4
    Membre émérite
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Par défaut
    Tu as un problème avec ton for, on ne met pas de virgule à la fin.

    Ensuite pour afficher les couleurs il te faut un tableau de correspondance qui liste toutes les couleurs que tu veux afficher.
    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char * coul_name[3] = { "Bleu", "Blanc", "Rouge" };
     
    printf("%s |", coul_name[t[i]]);

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

Discussions similaires

  1. Débutant en Javascript : problème de tableau !
    Par bluheim dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/11/2005, 15h03
  2. [XHTML] problème de tableau
    Par virgul dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 28/04/2005, 07h18
  3. Problème de tableau
    Par tom06440 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 26/04/2005, 20h30
  4. Problème de tableau
    Par krfa1 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 08/02/2005, 11h09

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