Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1196 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  le switch case peut t'il contenir plusieurs valeures??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

le switch case peut t'il contenir plusieurs valeures??

n°269139
vandekerpu​t
hooohhi'm'bohéé !!!!
Posté le 13-12-2002 à 16:08:40  profilanswer
 

Saluté todo el mundo !!!!
je comprend pas !! mon prog ne fonctionne pas j'ai fé un truc du genre ça :
Switch(a)
{ case 1||2||3||4 :
printf("barbatruc" );
default :  
printf("pas bien" );
}
 
et il me fé toujours "pas bien" sauf quand a vo 1... :-(
est ce que la syntaxe est correcte ou est ce que c que c pas possible...???!!!!!

mood
Publicité
Posté le 13-12-2002 à 16:08:40  profilanswer
 

n°269141
El_gringo
Posté le 13-12-2002 à 16:12:01  profilanswer
 

vandekerput a écrit :

Saluté todo el mundo !!!!
je comprend pas !! mon prog ne fonctionne pas j'ai fé un truc du genre ça :
Switch(a)
{ case 1||2||3||4 :
printf("barbatruc" );
default :  
printf("pas bien" );
}
 
et il me fé toujours "pas bien" sauf quand a vo 1... :-(
est ce que la syntaxe est correcte ou est ce que c que c pas possible...???!!!!!


 
Où t'as vu qu'on pouvait écrire un truc comme ça ?
Tu crois que ça s'improvice le C !? :pt1cable:  
Il te faut une doc, une livre, un tuto, qqch quoi !
Pour info, ton truc ça sera plutot :

Code :
  1. Switch(a)
  2. {
  3.   case 1:
  4.   case 2:
  5.   case 3:
  6.   case 4:
  7.          printf("barbatruc" );
  8.          break;
  9.   default :
  10.          printf("pas bien" );
  11. }

n°269149
nraynaud
lol
Posté le 13-12-2002 à 16:15:33  profilanswer
 

vandekerput a écrit :

Saluté todo el mundo !!!!
je comprend pas !! mon prog ne fonctionne pas j'ai fé un truc du genre ça :
Switch(a)
{ case 1||2||3||4 :
printf("barbatruc" );
default :  
printf("pas bien" );
}
 
et il me fé toujours "pas bien" sauf quand a vo 1... :-(
est ce que la syntaxe est correcte ou est ce que c que c pas possible...???!!!!!


 
tu t'es chié dessus, || est l'opérateur qui revoie 1 si l'un des ses 2 opérandes est pas égal à 0 ton expression vaut (((1||2)||3)||4)=1
c'est  
 

Code :
  1. Switch(a)
  2. { case 1 :
  3.   case 2 :
  4.   case 3 :
  5.   case 4 :
  6.   printf("barbatruc" );
  7.   break;
  8. default :
  9. printf("pas bien" );
  10. }


 
qui a le comportement que tu veux.
(tu avais oublié le break aussi)
 
lorsqu'il trouve une étiquette, il continue à descendre en exécutant tout jusqu'au break où il sort du bloc.
 

n°269205
vandekerpu​t
hooohhi'm'bohéé !!!!
Posté le 13-12-2002 à 16:55:10  profilanswer
 

merci bocoup les gars... :jap:  
 
moi y en avoir débuté le c hier... :whistle:  
et c'est pas super simple à se rapeler les syntaxes... :pt1cable:  
mais c'est vrai que dans la logique logistiquement évidentielle du probleme de reflexion logique il était tout à fait normal que la syntaxe ce comporte de cette manière, bon si je pèt un cable c'est pa grave, on est vendredi... la semaine a été dure en émotion et le truc c'est que vous en avez rien à foutre de ce que je di mais que vous lisez quand même parce que vous avez rien d'autre à foutre... :pt1cable:  
 
 :jap:  

n°269525
Musaran
Cerveaulté
Posté le 14-12-2002 à 02:45:24  profilanswer
 

Code :
  1. if( a == (1||2||3) )

Question: Y aurait-il moyen de faire que ça marche comme voulu ?
 
Genre avec les lambda-expressions (http://www.boost.org/libs/lambda/doc/index.html).


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°269539
nraynaud
lol
Posté le 14-12-2002 à 06:19:07  profilanswer
 

Musaran a écrit :

Code :
  1. if( a == (1||2||3) )

Question: Y aurait-il moyen de faire que ça marche comme voulu ?
 
Genre avec les lambda-expressions (http://www.boost.org/libs/lambda/doc/index.html).


 
c'est du pattern-matching :
(syntaxe caml)
 
match a with  
  1|2|3->valeur si oui
  | _ -> valeur pour le reste
 
_ correspond à un joker, il correspond à n'importe quoi.
 
C'est la première alternative qui correspond qui l'emporte (pas de backtracking, qui est l'apanage des langages logique comme prolog ou cury ).
 
sinon, avec des combinateurs et des curyfications il doit y avoir moyen de faire quelquechose (un truc approchant les monads) mais je maîtrise pas.
 
sinon, bien sûr tu peux fair un truc du style :
 
let rec is_in e l = match l with
  | [] -> false
  | x::_ when x = e -> true
  | _::xs -> is_in e q
 
mais bon parcourir une liste pour savoir si un élément est dedans ... ça pête pas des briques.
 
avec un peu de bidouille :
let (||) v (a,r) = (a, if r then r else a=v);;
let test = fun a -> (a,false);;
let result (a, r) = r;;
# result (112||11||(test 10));;
- : bool = false
# result (112||11||(test 11));;
- : bool = true
 
Y'a d'autres solutions avec des combinateurs mais c'est pas super plus optimisé.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  le switch case peut t'il contenir plusieurs valeures??

 

Sujets relatifs
DATAGRID >>Recuperer la valeur d'une case ![Java] Comment créer la javadoc des fichiers de plusieurs packages ?
mail () ; envoi a plusieurs dest....[SGBD ACCESS] Executer plusieurs requettes SQL en un seul coup
Plusieurs petites questions et demande de fonction sur Delphi[SQL] Additionné plusieurs champs numériques dont un est NULL ?
Cherches logiciel créateur d'installation de plusieurs logiciels.Retourner plusieurs résultats d'une fonction
Pourquoi ll'absence d'un break dans un switch fait tout executerPrtoection contre plusieurs lancements
Plus de sujets relatifs à : le switch case peut t'il contenir plusieurs valeures??


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR