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

  1. #1
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 47
    Points : 52
    Points
    52
    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 régulier
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 92
    Points : 84
    Points
    84
    Par défaut
    Tu pourrais utiliser une énumération. Le problème c'est qu'une énumération prend que des valeurs entières.
    Zero
    My site : http://blog.lecacheur.com
    GWhere project : http://www.gwhere.org
    Debian Addict site : http://www.debianaddict.org

  3. #3
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 47
    Points : 52
    Points
    52
    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 averti

    Inscrit en
    Juin 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 97
    Points : 307
    Points
    307
    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	
    }
    "J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone."-Bjarne Stroustrup
    www.stroustrup.com

  5. #5
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 47
    Points : 52
    Points
    52
    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 averti

    Inscrit en
    Juin 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 97
    Points : 307
    Points
    307
    Par défaut
    Non.
    On ne peut pas mettre des intructions dans un type en C.
    "J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone."-Bjarne Stroustrup
    www.stroustrup.com

  7. #7
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 47
    Points : 52
    Points
    52
    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