begin process at 2012 05 29 05:06:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

fonction switch et équivalent


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

fonction switch et équivalent

vendredi 21 mai 2010 à 15:49:30 | fonction switch et équivalent

gromhouleux

Bonjour,

en fait je cherche un équivalent à la fonction switch en C++.
Je m'explique,Switch permet de faire une action en fonction d'une valeur entière d'une variable.
ex:
switch(A)
{ case 1: B=10;break;
case 2: B=20;break;
case 3: B=30;break;
case 4: B=40;break;
default: B=0;break;
}

Ce qui m'ennuie c'est que je voudrait faire la même chose qu'avec un switch mais avec des comparaisons au lieu de valeurs entières.

ex:
switch(A)
{ case <5: B=10;break;
case <10: B=20;break;
case <15: B=30;break;
case <20: B=40;break;
default: B=0;break;
}

Y'aurait t'il une fonction qui me permettrait de faire ça et m'éviterait d'utiliser 4 ou 5 "IF THEN ELSE" assez disgracieux ?

Merci d'avance.
vendredi 21 mai 2010 à 16:32:28 | Re : fonction switch et équivalent

DeAtHCrAsH

Salut,

Pour ma part je ne vois pas ce qu'une condition if(...) a de disgracieux.
C'est plus court a écrire et tout aussi compréhensible, en c++ il n'y a pas de then, si tu veux faire du vb t'es pas sur le bon forum.

Pour répondre à ta question, un switch n'ait pas fait pour travailler sur des interval.

Ton exemple ce résume donc a ca :

if(a < 5){
b = 10;
}else if(a < 10){
b = 20;
}
...

Shell
vendredi 21 mai 2010 à 16:37:45 | Re : fonction switch et équivalent

CptPingu

Administrateur CodeS-SourceS
"switch" n'est pas une fonction, mais on mot clé du langage, un mechanisme.
Non, tu ne peux pas. D'ailleurs si ton exemple était possible, et que "A" valait 1, alors il entrerait dans tous les "case" (1 est bien inférieur à 20, à 10, etc...).

Au pire tu peux faire un:
Code C/C++ :
switch(A)
{
  case 1: case 2: case 3: case 4: case 5: B = 10; break;
  case 6: case 7: case 8: case 9: case 10: B = 20; break;
  etc...
  default: B = 0; // Pas besoin de break dans un default
}


Autres solutions, si tu ne dois qu'associer des valeurs à d'autre choses:
- Tu peux utiliser une std::map
- Tu peux utiliser un vecteur de pair et faire une recherche dedans


_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
vendredi 21 mai 2010 à 17:22:30 | Re : fonction switch et équivalent

gromhouleux

Merci pour vos réponses, je vais donc utiliser des IF.

En ce qui concerne ce que tu dis:"D'ailleurs si ton exemple était possible, et que "A" valait 1, alors il entrerait dans tous les "case" (1 est bien inférieur à 20, à 10, etc...)",je pensais que le break aurait permis de sortir du "pseudo-switch" dès qu'on serait tombé sur une condition vrai.

Je cherchais juste à savoir si il y avait une autre solution simple,j'aime pas trop la redondance de IF au niveau de l'aspect visuel même si je sais bien que le programme fonctionnera tout aussi bien.

Encore merci d'avoir répondu si rapidement.
vendredi 21 mai 2010 à 17:25:04 | Re : fonction switch et équivalent

CptPingu

Administrateur CodeS-SourceS

En ce qui concerne ce que tu dis:"D'ailleurs si ton exemple était possible, et que "A" valait 1, alors il entrerait dans tous les "case" (1 est bien inférieur à 20, à 10, etc...)",je pensais que le break aurait permis de sortir du "pseudo-switch" dès qu'on serait tombé sur une condition vrai.



Ce que je voulais dire, ce que ton "switch" n'aurait pas su dans quel "case" aller (vu que toute les cases étaient valides).
Le break permet bien de sortir du "switch".
La question, et donc la réponse, restent théoriques, vu que ton exemple n'est pas possible :).

_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
vendredi 21 mai 2010 à 17:47:10 | Re : fonction switch et équivalent

gromhouleux

Ok je vois ce que tu voulais dire, visiblement j'avais pas bien compris le fonctionnement du switch,je pensais qu'il lisait les lignes les unes après les autres et s'arrêtait des qu'il tombait sur le bon case.
Mais maintenant je me rappelle qu'on ne doit pas mettre 2 "case" avec la même valeur,ça aurait du me mettre la puce à l'oreille.
Mais je reste étonné qu'il n'existe pas de "mots clef" (je doit commencer à employer les bon termes ou ça me jouera des tours un jour...) pour faire ce que je voulais au départ.


Cette discussion est classée dans : fonction, case, break, switch, équivalent


Répondre à ce message

Sujets en rapport avec ce message

switch ... case [ par didrocks ] J'ai un problème est mon case:int n=App->run; // dépendant de la partie du programme en cours switch(n); { case 1: // intro { App->BmpDeFond = App-> Petit problem avec switch [ par Darkneon ] Salut, Mon but est de faire bouger le curseur a l'ecran avec les fleches et d'afficher une lettre a cette position.J'ai le codde suivant.#include &l switch case : utilisation de * / + - [ par did2604 ] Bonjour,Je suis débutant et j'ai un problème sur un programme utilisant l'alternative switch case. En fait, je dois utiliser mon case sur des signes t Problème de SWITCH [ par EMSIEN ] Bonjour Voilà J'ai rencontré un problème Lors de l'utilisation d'une instruction switch,D'abord je veux réaliser une fonction permettant de retourner Problème switch [ par seleccao ] Bonjours à tous Pour mon application en c++ je travaille avec de l'hexadecimal et j'utilise un switch switch(n1) { case '0000': hexa1 = "0";break; ca switch & case [ par DeadStarXt ] Bonjour,Nous souhaiterions compacter la syntaxe suivante SANS PASSER PAR default :case 'a' : Instructions;break;case 'b' : Instructions;break;case 'c' Problème avec un switch en C [ par alexis69 ] Alors voilà. J'ai coder un petit code avec un menu. À la fin de mon switch j'ai ajouté l'option default comme ça si une personne tape autre chose que [Win32] Problème Scrollbar [ par Iphelias ] Bonjour,Je developpe actuellement une application win 32 et je rencontre un problème.En gros dans ma fenetre j'ai 2 Scrollbars. SDL porbleme [ par fahdovski ] IL Y'A EXECUTION MAIS LE PC PLANTE IL DEVIENT TRES LENT, MAIS POURQUOI??????jE TRAVAILLE SUR CODE::BLOCKS SOUS LINUXAVANT CA MARCHAIS IMPEC QUESQUI C'


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales