Partage
  • Partager sur Facebook
  • Partager sur Twitter

switch à l'interieur de struct

    28 février 2008 à 14:48:58

    Salut,
    je voudrais savoir est ce que c'est possible d'avoir une instruction switch à l'interieur de struct?
    par exemple:
    typedef struct cellule
    { int i;
    switch(i)
    { case 1 : type1 v1;
    case 2 : type2 v2;
    case 3 : type3 v3;
    }
    cellule * next;
    }

    type1,type2,type3 sont des structures differentes que je vais utiliser suivant le cas
    (j'utilise visual C++ 6.0 et il me dit "syntax error sur switch")

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      28 février 2008 à 14:53:35

      non mais tu peux eploiter les #ifdef ou #ifndef.
      Sinon si tu as besoin de générer a la volée des structures de types différents, je te conseille de faire des recherches sur le design pattern factory.
      • Partager sur Facebook
      • Partager sur Twitter
        28 février 2008 à 15:43:28

        je voulais savoir si c'était possible ou non
        Merci
        • Partager sur Facebook
        • Partager sur Twitter
          28 février 2008 à 15:47:09

          Citation : ledemonboiteux

          non mais tu peux eploiter les #ifdef ou #ifndef.
          Sinon si tu as besoin de générer a la volée des structures de types différents, je te conseille de faire des recherches sur le design pattern factory.



          Il t'as répondu et en plus il t'a donné une solution, que demander de mieux?

          en passant un simple #if,#else,#endif peut aussi faire l'affaire.
          • Partager sur Facebook
          • Partager sur Twitter
            28 février 2008 à 17:11:26

            Le polymorphisme d'inclusion me semble être la réponse toute indiquée à ta question.
            • Partager sur Facebook
            • Partager sur Twitter
            C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
            Anonyme
              28 février 2008 à 17:27:15

              Pour devoir faire ca , il ya un problème de conception.
              On pourrai te sortir de plien de choses, mais sans plus de détails, impossible de t'aider plus que ca.
              • Partager sur Facebook
              • Partager sur Twitter
                28 février 2008 à 20:21:32

                Je me suis inscrit aujourd'hui à ce site car je suis "un zéro", je débute en C ++
                Pour #ifdef ou #ifndef j'ai aucune idée!!
                Pour mon problème est que je dois réaliser un système expert et on m'a proposé cette idée mais je n'arrive pas à la réaliser.

                typedef struct cell
                { int i;
                switch(i)
                { case 1 : tregle v1;
                case 2 : tfait v2;
                case 3 : taffirm v3;
                }
                cellule * next;
                }cell;
                typedef cell * pcell ;/* pointeur sur cellule puisqu'il y auras plusieurs fonctions communes aux différents types (ajout_cell,supprime_cell,…)*/
                typedef enum tetat {vrai, faux, indetermine, inconnu } ;
                typedef struct tfait
                { ch libelle;
                tetat etat;
                bool edit;
                bool demand;
                pcell deduit_de;
                }tfait;
                typedef struct taffirm
                { pcell fait;
                tetat etat;
                }taffirm;
                typedef struct tregle
                { pcell cond;
                taffirm action;
                bool active;
                }tregle;
                J'ai essayé de faire chaque type tout seul :
                typedef struct tfait
                { ch libelle;
                tetat etat;
                bool edit;
                bool demand;
                tregle deduit_de;/* j'ai un problème ici, la règle dont on a déduit le fait*/
                tfait * next;
                }tfait;
                typedef struct taffirm
                { tfait fait;
                tetat etat;
                taffirm * next;
                }taffirm;
                typedef struct tregle
                { tfait cond;
                taffirm action;
                bool active;
                tregle * next;
                }tregle;
                (le contenu de chaque structure nous a été imposé par le prof)
                Merci pour votre compréhension
                • Partager sur Facebook
                • Partager sur Twitter
                  28 février 2008 à 20:49:12

                  1. typedef struct cell
                  2. { int i;
                  3. switch(i)
                  4. { case 1 : tregle v1;
                  5. case 2 : tfait v2;
                  6. case 3 : taffirm v3;
                  7. }
                  8. cellule * next;
                  9. }cell;
                  10. typedef cell * pcell ;/* pointeur sur cellule puisqu'il y auras plusieurs fonctions communes aux différents types (ajout_cell,supprime_cell,…)*/
                  11. typedef enum tetat {vrai, faux, indetermine, inconnu } ;
                  12. typedef struct tfait
                  13. { ch libelle;
                  14. tetat etat;
                  15. bool edit;
                  16. bool demand;
                  17. pcell deduit_de;
                  18. }tfait;
                  19. typedef struct taffirm
                  20. { pcell fait;
                  21. tetat etat;
                  22. }taffirm;
                  23. typedef struct tregle
                  24. { pcell cond;
                  25. taffirm action;
                  26. bool active;
                  27. }tregle;
                  28. J'ai essayé de faire chaque type tout seul :
                  29. typedef struct tfait
                  30. { ch libelle;
                  31. tetat etat;
                  32. bool edit;
                  33. bool demand;
                  34. tregle deduit_de;/* j'ai un problème ici, la règle dont on a déduit le fait*/
                  35. tfait * next;
                  36. }tfait;
                  37. typedef struct taffirm
                  38. { tfait fait;
                  39. tetat etat;
                  40. taffirm * next;
                  41. }taffirm;
                  42. typedef struct tregle
                  43. { tfait cond;
                  44. taffirm action;
                  45. bool active;
                  46. tregle * next;
                  47. }tregle;
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
                    28 février 2008 à 23:41:10

                    est ce que tu peux nous espliquer tes objectifs:
                    on programme il est cencé faire quoi?
                    tu veux un code qui sers a quoi?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      29 février 2008 à 20:29:49

                      Salut,
                      Je veux réaliser un programme "système expert" (raisonnement en logique des propositions)
                      Ce programme doit me permettre de manipuler les faits et les règles (ajout, suppression, visualisation, impression dan un fichier) avec un moteur d'inférence en raisonnement "chaînage avant"
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        29 février 2008 à 20:54:11

                        En gros tu veux faire une sorte de Prolog en C++ ou je me plante ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          29 février 2008 à 23:06:09

                          C'est un exo donné par un prof ou un projet perso ?
                          Tu as le droit d'utiliser des blibliothèques extranes ou tout est "fait main" ?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            1 mars 2008 à 19:38:51

                            c'est un mini projet donné par un prof
                            je pense que tout doit être fait à la main
                            (Si non quels bibliothèques externes je dois utiliser?)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              1 mars 2008 à 21:02:44

                              Merci, je vais les voir
                              je voudrais savoir comment faire pour resoudre le probleme de mes 2 stuctures dépendantes:
                              struct tregle contenant 1 champ struct de type tfait et vice versa
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                1 mars 2008 à 22:08:29

                                FAQ de developpez.com.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  3 mars 2008 à 10:10:36

                                  Tes structures ne peuvent pas fondamentalement s'inclure mutuellement, c'est une question de logique : exemple:

                                  struct boite{
                                  carton C
                                  ...};

                                  struct carton{
                                  boite B
                                  ...}

                                  Si tu déclare ca :tu dit un carton contient une boite qui contient un carton qui contient une boite qui contient un carton ...
                                  Et tu définit un enemble récursif de structures infini.

                                  Tu as probablement une erreur de conception, ici par exemple Carton contient Boite car une boite rentre dans un carton;
                                  struct Carton{
                                  boite B;
                                  ...};

                                  Par contre une boite ne contient pas de carton, mais elle peut y faire référence:

                                  class Carton; //(j'indique que le carton est une classe)
                                  struct boite{
                                  Carton &C;
                                  ...
                                  };
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    4 mars 2008 à 21:15:00

                                    j'ai pensé qu'il y a quelque chose qui va pas
                                    Merci pour ton explication
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    switch à l'interieur de struct

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown