Go Down

Topic: Switch case et inertevalles (Read 1 time) previous topic - next topic

KiliYaBB

Bonjour,

Je voudrais faire du switch case sur des intervalles.

exemple :

soit une variable var qui peut varier de 100 à 1200
si var compris entre 100 et 200 =>action1
si var compris entre 201 et 500 =>action2
si var compris entre 501 et 1200 =>action3

Quelle syntaxe faut-il ?

le code de base est :
switch (var) {
   case 1:
     //do something when var equals 1
     break;
   case 2:
     //do something when var equals 2
     break;
   default:
     // if nothing else matches, do the default
     // default is optional
 }
mais dans mon cas, comment faire ?

switch (var) {
   case (>=100 && <=200):
     //action1
     break;
   case (>200 && <=500):
     //action2
etc...
 }

?????

Merci !

-Gil-

Bonjour,

Le switch-case ne fonctionne qu'avec un ensemble de valeurs définies, il n'est pas possible d'avoir un test dans le case.

Pour faire des tests d'intervalles, il faut utiliser des if - else if ...

Pour reprendre ton example :

soit une variable var qui peut varier de 100 à 1200
si var compris entre 100 et 200 =>action1
si var compris entre 201 et 500 =>action2
si var compris entre 501 et 1200 =>action3

Code: [Select]

if (var>=100)
{
  if (var<=200)
  {
      // action 1
  }
  else if (var<=500)
  {
     // action 2
  }
  else if (var<=1200)
  {
     // action 3
  }
}


Il y a d'autres façons d'ordonner les tests, mais celui-ci à comme avantage de ne faire chaque test qu'une fois.

++

KiliYaBB

arf, cest bien ce que je pensais mais jaurai bien aimé un swtich case pour faire qque chose de proprose mais en même temps ce que tu proposes ma plait aussi

Luj06

Un conseil, ne regarde pas que la façon dont le code est écrit, mais aussi le gain en temps, en ressources, etc.. Tu bosses sur un micro-contrôleur, pas un serveur web :)


Go Up