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

  FORUM HardWare.fr
  Programmation
  C++

  Une liste de valeurs acceptables pour des entiers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Une liste de valeurs acceptables pour des entiers

n°292707
warp
Posté le 23-01-2003 à 17:25:16  profilanswer
 

Dans le construceteur d'un objet, je récupère
une valeur entière.
Il faut que cette valeur fasse partie d'une liste de valeurs qui sont acceptables.
Comment puis-je faire ?
 
Je pensais à qqchose du genre :
 
enum valeurs_ok { 2, 8, 9, 10 };
 
Puis........puis je ne sais pas. De toute façon
on ne peut pas faire de "enum" avec des entiers.
 
Une façon de faire serait de créer un tableau d'entiers,
mais cela m'obligerait à parcourir tout le tableau pour vérifier
si le nombre est bon.
 
Est-ce la seule solution ?


---------------
Il n'est pas nécéssaire de réussir pour persévérer.
mood
Publicité
Posté le 23-01-2003 à 17:25:16  profilanswer
 

n°292733
El_gringo
Posté le 23-01-2003 à 17:56:31  profilanswer
 

Comment ça on peut pas faire de enum avec des entiers !???
c bien enum que j'utiliserais ds ton cas :


// Sois + explicite sur le nom de ton enum
enum VALS {DEUX=2, HUIT=8, NEUF=9, DIX=10}
 
taFonctionOuMethode (VALS _monVals)
{ //...
}

n°292912
LeGreg
Posté le 23-01-2003 à 22:31:03  profilanswer
 

si ton tableau d'entiers est trie tu peux faire
une recherche en temps logarithmique (cas le pire).
 
Tu peux aussi utiliser des set c'est pour ca qu'ils existent:  
tu crees un set d'entier et tu peux verifier la presence
de l'entier en question en temps logarithmique (ca t'evite de creer la fonction de recherche a la main meme si c'est assez rapide a faire)
 

Code :
  1. int tab[] = {2, 8, 9, 10} ;
  2. //construit le set a partir du tableau
  3. std::set<int> correctTab(tab, tab + 4) ;
  4. if (correctTab.find(entier))
  5. {
  6.   std::cout << "entier ok" << std::endl;
  7. }
  8. else
  9. {
  10.   std::cout << "entier pas ok" << std::endl;
  11. }


 
les enums ne reglent qu'a moitie ton probleme
parce que l'utilisateur va pouvoir faire un
cast (explicite) d'un entier vers le type enum.
Cela sert si tes entiers representent une valeur
symbolique et qu'une autre valeur n'a aucun sens.
par exemple :

Code :
  1. enum Couleur {
  2.   ROUGE,
  3.   JAUNE,
  4.   VERT
  5. };


Cela permet d'encoder des constantes sans utiliser
de define egalement.
 
A+
LeGreg


---------------
voxel terrain render engine | animation mentor
n°292914
Taz
bisounours-codeur
Posté le 23-01-2003 à 22:43:44  profilanswer
 

si ton constructeur prends comme paramètre un int, le problème de l'enum, c'est effectivement le parcours un peu la batarde... donc le mieux c'est un joli tableau C static et const en de préférence trié pour une recherche plus rapide.
 
mais effectivement, si tu utilise une enum comme paramètre, plus de problème, c'est tout ce qu'il y a de plus courant


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

  Une liste de valeurs acceptables pour des entiers

 

Sujets relatifs
[VC++] Traitement d'une liste de Nombres[C] Liste des processus qui tournent sur le system (windows)?
[Access] Récupérer le contenu d'une listecomment dupliquer une liste de pointers ? (les objets pointés aussi).
liste de choix -> 1 ou tous--> Probleme pour recupérer une valeur dans une liste ! HELP !!!!! <--
Comment recupérer le code d'une liste deroulante?declaration de Liste d'objet
Lecture d'un fichier texte contenant des entiers...[JS] PB avec la valeur d'une liste
Plus de sujets relatifs à : Une liste de valeurs acceptables pour des entiers


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