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 :

lecture de mon fichier d'entrées : problèmes avec les enum et les fonctions


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut lecture de mon fichier d'entrées : problèmes avec les enum et les fonctions
    Bonjour, je me suis fait une fonction qui, à l'aide de fgets, lit mon fichier d'entrée (input.txt) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    KWD1    7
    KWD2   YES
    KWD3    8
    KWD4    0
    Ce que je veux faire, c'est une fonction qui vérifie que les mot-clé ont bien été saisi (je veux m'assurer que l'utilisateur a bien par exemple saisi le mot-clé KWD4. Mais j'ai une contrainte qui est que si l'utilisateur saisi YES à KWD2 alors il doit saisir le mot-clé KWD3. Si KWD2 vaut NO alors il n' a pas besoin de saisir le mot-clé KWD3.

    Donc, je me suis fait un tableau keywordOK[] où la composante vaut 1 si le mot-clé a été saisi et 0 sinon.

    Voici mon code (bien sûr, dans mon programme j'ai bcp plus de mot-clé...). Ici, j'ai directement donné des valeurs à mon tableau keywordOK pour simplifier le post.

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    #include<stdlib.h>
    #include<stdio.h>
     
    int main(void)
    {
      enum Keyword {KWD1, KWD2, KWD3,KWD4,NB_KWD};
      char const * listkwd[]={"KWD1", "KWD2", "KWD3", "KWD4"};
      int i,err=0;
     
     /* 3 jeux d'essai */
      //int keywordOK[NB_KWD]={1,1,1,1};
      //int keywordOK[NB_KWD]={1,0,1,0};
      int keywordOK[NB_KWD]={1,1,0,0};
     
      /* 
         si keywordOK[i]==0 il y a une erreur, i==KWD1, KWD2,KWD4
         
         si keywordOK[KWD2]==1 alors il faut que keywordOK[KWD3]==1 sinon il y a
         une erreur
       */
     
      for(i=0;i<NB_KWD;++i)
      {
        if(i==KWD3)
        {
          if(keywordOK[KWD2]==1 && keywordOK[KWD3]==0)
          {
            printf("le mot-cle KWD3 doit etre saisi\n");
    	err=1;
          }
        }
        else
        {
          if(keywordOK[i]==0)
          {
            printf("le mot-cle %s doit etre saisi\n",listkwd[i]);
    	err=1;
          }
        }
      }
     
      if(err==1)
        printf("la saisie des mot-cles est incorrecte\n");
      else
        printf("la saisie des mot-cles est correcte\n");
     
      return 0;
    }
    J'ai deux questions :
    1) j'aimerais faire une fonction CheckKeywords(???) qui fasse la vérification (car ici je ne vous ai présenté qu'une seule "contrainte", mais dans mon "vrai" programme, j'ai une petite vingtaine de mot-clé (température initiale, pression initiale, masse de carburant, température de la paroi du moteur etc...) et une demie-douzaine de "contraintes"). Comment puis-je procédé ? Je n'arrive pas à passer un enum en argument de ma fonction

    2) si vous regardez bien mon code, la liste de enum et de listkwd est dans le même ordre. Est-il possible d'éviter d'avoir ces deux variables "redondantes" ?

    Merci beaucoup.

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par salseropom Voir le message
    2) si vous regardez bien mon code, la liste de enum et de listkwd est dans le même ordre. Est-il possible d'éviter d'avoir ces deux variables "redondantes" ?
    http://emmanuel-delahaye.developpez.com/item_list.htm

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    OK merci beaucoup !

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

Discussions similaires

  1. [Batch] ! dans mon fichier d'entrée (cause problème [must be escaped])
    Par THKKK dans le forum Scripts/Batch
    Réponses: 15
    Dernier message: 18/06/2010, 11h25
  2. Problème avec mon fichier d'entrées
    Par salseropom dans le forum C
    Réponses: 6
    Dernier message: 11/10/2007, 18h08
  3. Lecture d'un fichier XML de config avec Java
    Par cofy dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 31/01/2006, 15h54
  4. lecture de mon fichier de donnees initiales
    Par salseropom dans le forum C
    Réponses: 9
    Dernier message: 13/01/2006, 14h41

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