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 :

Type énuméré: faire saisir dans un intervalle de valeur ?


Sujet :

C

  1. #1
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut Type énuméré: faire saisir dans un intervalle de valeur ?
    Je ne me suis jamais servi des types énumérés en C mais par curiosité, j'ai eu l'envi d'essayer mais je n'est pas trouvé quelque chose qui me convenait sur Internet
    En fait j'aimerais faire saisir à l'utilisateur un jour de la semaine et j'aimerais savoir si on peut le faire avec les types énumérés ce qui éviterait de comparé la chaine à chaque jour pour voi si oui ou non, c'est correct
    Voici un début de code, mais pour la suite, je sais vraiment pas comment faire, quelqu'un peut -il m'aider ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    enum Tjour {Lundi, Mardi, Mercredi,Jeudi,Vendredi,Samedi,Dimanche};
     
    main()
    {
          enum TJour UnJour;
          printf("Saisir un jour : ");
    Merci
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 235
    Points : 134
    Points
    134
    Par défaut
    salut,

    on doit saisir en lettres ou en chiffre ?
    si c'est en lettres il faut faire un tableau de ce type
    char *jours_semaine[7] = { "lundi","mardi",...};
    enum Tjour {Lundi, Mardi, Mercredi,Jeudi,Vendredi,Samedi,Dimanche};


    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
     
    switch(mon_choix) {
     
    case Lundi:
       printf("c'est un lundi");
    break;
    case Mardi:
       printf("c'est un mardi");
    break;
    case Mercredi:
       printf("c'est un mercredi");
    break;
    case Jeudi: 
       printf("c'est un jeudi");
    break;
    ....
    default:
       printf ("CHOIX INVALIDE");
    }

  3. #3
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    Ca ne répond pas vraiment à ma question. En fait, je veux faire saisir une chaine et on recommence tant que cette chaine n'appartient pas au valeur du type énuméré...comme j'ai décrit avec le code du premier post
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

  4. #4
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Un enum est une facilite de codage qui fait correspondre a un entier un nom (ce qui plus ou moins l'equivalent d'un #define), c'est un alias. Mais si en codant tu peux utiliser le nom de l'enum pour te simplifier la vuie, lors de l'execution seul la valeur numerique est utilisable, donc, si j'ai bien compris ta demande, ce que tu souhaites faire n'est pas faisable.

  5. #5
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut rep
    Ok, alors si j'ai bien comprit, pour vérifier que la chaine est bonne, on doit faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    char jour[20];
      do{
        printf("saisir jour : ");
        scanf("%s", jour);
      }while(strcmp(jour,"lundi")&&strcmp(jour,"mardi")...);
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

  6. #6
    Membre éprouvé
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Points : 1 166
    Points
    1 166
    Par défaut Re: rep
    Citation Envoyé par Albest
    Ok, alors si j'ai bien comprit, pour vérifier que la chaine est bonne, on doit faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    char jour[20];
      do{
        printf("saisir jour : ");
        scanf("%s", jour);
      }while(strcmp(jour,"lundi")&&strcmp(jour,"mardi")...);
    C'est une solution oui ...
    Ta condition n'est pas écrite en entier, mais une la chaine "jour" ne peut contenir "lundi" et "mardi" ...

    Nas'

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    Nas', je pense qu'il a bon. strcmp renvoie 0 quand il trouve que les 2 chaines sont identiques, et une autre valeur dans le cas contraire.

    si la chaine n'est pas dedans, ça fera un "vrai"&&"vrai"&&...&&"vrai", dans le cas contraire, ça fera pareil sauf un "faux" quelquepart. Donc la condition deviendra fausse, et on quittera.

    le seul point sur lequel je ne soit pas sûr c'est le fait qu'un "0" soit toujours faux alors qu'une valeur différente de "0" soit toujours vrai.

  8. #8
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par teska
    le seul point sur lequel je ne soit pas sûr c'est le fait qu'un "0" soit toujours faux alors qu'une valeur différente de "0" soit toujours vrai.
    Si c'est bon, en C 0 est faux

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/03/2014, 14h33
  2. [JAXB]Comment faire apparaitre dans le xsd une valeur par défaut pour un attribut
    Par Marcos Ickx dans le forum Persistance des données
    Réponses: 0
    Dernier message: 07/01/2010, 18h38
  3. Type énuméré, subtype et intervalle
    Par silken dans le forum Ada
    Réponses: 6
    Dernier message: 04/03/2009, 22h41
  4. faire saisir des informations différentes dans une variable for
    Par zoozbiro dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 09/11/2008, 21h25
  5. Réponses: 4
    Dernier message: 24/11/2006, 11h36

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