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 :

switch dans typedef (equiv case dans record [pascal])


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 47
    Par défaut switch dans typedef (equiv case dans record [pascal])
    bonjour je voudrais savoir comment implémenter un switch dans un typedef afin de definir des constante en fonction d'un nom qui est contenu dans le meme type structuré je m'explique au cas ou ca ne serait pas assez concret:

    [ L'EXISTANT]
    j'ai un type devise contenant un nom NOM de type char[20] et un identifiant ID de type char
    l'identifiant peut prendre les premiere lettres de chaque devises on se limiteras pour l'instant a d pour dollar et e pour euro
    cela donne donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    typedef struct Devise
    {
    	char ID;
    	char NOM[20];
    }

    Je voudrai donc inserer dans ce type une constante RATIO de type reel qui prend une valeur en fonction de ID par exemple

    si ID= 'e' alors RATIO prend comme valeur 1
    si ID='d' alors RATOI prend 0.98

    je pensait notemment utiliser un switch puisque les devises seront multiples et en plus le switch se rapproche assez du case <var> of que l'on peut introduire dans un record en pascal

    alors j'attend vos commentaireet pour les petits curieux il s'agit bien d'une fonction permettant de faire la somme de 2 valeurs dans 2 devises differentes mais sans l'utilisation de structure de controle dans l'implémentation de la fonction


    je vous laisse cogiter si toute fois c'est necessaire pour y repondre!

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 92
    Par défaut
    Tu pourrais utiliser une énumération. Le problème c'est qu'une énumération prend que des valeurs entières.

  3. #3
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 47
    Par défaut
    mon probleme ne se situe pas au niveau de l'enumeration de differentes identification de devises mais au niveau de l'affectation dans la structure de la valeur du ration en fonction de ID

  4. #4
    Membre expérimenté

    Inscrit en
    Juin 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 97
    Par défaut
    Ce que tu demandes est possible en C++, mais pas directement en C.
    On peut toutefois faire un peu d'approche objet:
    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
    typedef struct Devise
    {
    	char ID;
    	char NOM[20];
    	double ratio;
    }
     
    void setupratio(struct Devise* dev){
    	switch(dev->ID){
    		case '': ratio= 1.  ; break;
    		case '$': ratio=  .98; break;
    		default : ratio= 0;
    			perror("monnaie inconnue");
    	}
    }
     
    void setupDevise(struct Devise* dev, char ID, char* NOM){
    	dev->ID= ID;
    	strcpy(dev->ID, ID);
    	setupratio(dev);
    }
     
    int main(void){
    	struct Devise euro;
    	setupDevise(&euro, '', "Euro"); //inispensable d'utiliser la fonction pour initialiser	
    }

  5. #5
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 47
    Par défaut pas possible non plus
    ce que je voudrais faire c'est vraiment une structure avec un switch a l'interieur est-ce possible? meme si ca demande 2 ou 3 structures pas de problemes

  6. #6
    Membre expérimenté

    Inscrit en
    Juin 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 97
    Par défaut
    Non.
    On ne peut pas mettre des intructions dans un type en C.

  7. #7
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 47
    Par défaut
    ok merci quand meme c'est quand meme dommage mais l'objective c le permet-il?

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/11/2008, 08h21
  2. bouclé les "case" dans un switch
    Par nicerico dans le forum Langage
    Réponses: 2
    Dernier message: 25/10/2007, 10h46
  3. Position de default et case dans un switch
    Par Glutinus dans le forum C
    Réponses: 16
    Dernier message: 11/09/2006, 22h17
  4. [java]probleme de case dans switch
    Par mousstik dans le forum Langage
    Réponses: 8
    Dernier message: 19/09/2005, 16h27
  5. vérification de passage dans un select case
    Par arsgunner dans le forum ASP
    Réponses: 5
    Dernier message: 14/06/2004, 10h05

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