Méthode Switch et Opérateur Logique

10demon10 Messages postés 63 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 28 juin 2012 - 28 juin 2012 à 22:12
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 - 30 juin 2012 à 11:46
Bonjour à tous

J'aurai une question concernant la méthode Switch en Objective C (par avance je m'excuse si je ne suis pas au bon endroit pour poster ce message).

Je souhaiterais récupérer la valeur d'une variable aléatoire et la comparer avec un opérateur logique pour donner une valeur à une autre variable. Le code sera plus explicite je pense:

int value = 0;
int rand_value = arc4random() % 101;
switch (rand_value) {
case <= 45:
value = 50;
break;
case >45 && <=70:
value = 100;
break;
case > 70 && <= 85:
value = 250;
break;
default:
break;
}


Si quelqu'un a une suggestion je suis preneur.
Merci d'avance.


nomad & wild [  ]

1 réponse

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
30 juin 2012 à 11:46
Salut,

Le switch demande des constantes dans ses "cases" car il est construit à la compilation et n'est pas dynamique.
De plus ton code essaye de renvoyer un booleen à chaque case, ce qui n'est pas admis.

Logiquement, Il suffirait de faire un if, else.
Mais tu peux créer des MACROs simulant le switch :

#define SWITCH(constVal, PTRres) { \
const int _switchVal = constVal; \
int* _switchvarAffect = PTRres; \
if(false) *_switchvarAffect=0;

#define CASE(val,min,max) \
else if(_switchVal>=min && _switchVal<=max) \
*_switchvarAffect = val;

#define DEFAULT(def) \
if(*_switchvarAffect==0) \
*_switchvarAffect = def;}


Que tu utiliserait comme ceci :

int value = 0;
int rand_value = arc4random() % 101;

SWITCH(rand_value, &value)
CASE(50,-9999,45)
CASE(100,46,70)
CASE(250,71,85)
DEFAULT(0);

// Ici value contient la bonne valeur



bye...
0
Rejoignez-nous