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

  FORUM HardWare.fr
  Programmation
  C++

  Comfirmer moi si mon predicat est bon ???

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comfirmer moi si mon predicat est bon ???

n°449594
weed
Posté le 06-07-2003 à 03:09:00  profilanswer
 

voila j'aimerais savoir si ma liste ou non un elements plus plus petit que 0.03 et qui soit différent de 0
 
je pensais faire mon propre predicat :

Code :
  1. bool carre :: zero (float n)
  2. {
  3.    if (n< 0.02 && n!=0)
  4.       return true;
  5.    else
  6.       return false;
  7. }


 
pour l'uliser :
 

Code :
  1. bool carre :: verif_position(list<float> &lx)
  2. {
  3.   list<float>::iterator gauche;
  4.    
  5.    gauche = find_if (lx.begin (), lx.end (), zero);
  6.    if ( (gauche !=lx.end() )
  7.    {
  8. //pas trouvé  
  9. return false;
  10.    }
  11.    else
  12.    {
  13. //trouvé
  14. return true;
  15.    }
  16. }


 
j'ai comme message d'erreur :

Citation :

Error:  algorith.h(111,1):Call of nonfunction


 
et ca vient de la ds algorithm.h  

Code :
  1. template <class InputIterator, class Predicate>
  2. InputIterator find_if (InputIterator first, InputIterator last, Predicate pred)
  3. {
  4.     while (first != last && !pred(*first)) ++first;
  5.     return first;
  6. }


ne connaissant pas bien pour le moment les templates, je sais pas d'ou vient mon erreur
 
 
 
ne trouvant pas j'ai essayé de faire un truc ds le genre ms cela ne fonctionne pas bien, j'ai une boucle infini (pb de pointeur peut etre qui ne pointe sur quelques choses qui a été effacé):

Code :
  1. list<float>::iterator gauche, gauche_debut;
  2. gauche_debut = lx.begin ();
  3. do {
  4. gauche = find_if (gauche_debut, lx.end (), bind2nd (std::less<float> (), 0.02));
  5. // si je trouve zero commme elements
  6. if ((*gauche) == 0)
  7. //je copie l'adresse de l'element contenant 0  
  8.     gauche_debut = gauche;
  9.     //et je passe à l'element superieur, dorenavant je ferais ma recherche à partir de cette nouvelle adresse
  10.     gauche_debut++; 
  11. }     
  12.  
  13.    } //tant que l'lement trouvé =0, je recommence la recherche
  14. while ( (*gauche) ==0);


 
ms en fait je viens de me rendre compte que je pourrais tout simplement parcourir ma list avec un iterateur et tester les valeurs.
cela dit j'aimerais bien le faire avec un predicat.


Message édité par weed le 06-07-2003 à 03:10:29
mood
Publicité
Posté le 06-07-2003 à 03:09:00  profilanswer
 

n°449614
Taz
bisounours-codeur
Posté le 06-07-2003 à 10:45:38  profilanswer
 

c'est parcequ'une fonction membre n'est pas une fonction comme les autres.
 
fais un objet fonction / utilise mem_fun_ref.
 
sinon fais quelque révision de logique parce que
 
if(true) return true else return false;
 
ça c'est balaise
 
et ta fonction zero devrait etre const et static


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

  Comfirmer moi si mon predicat est bon ???

 

Sujets relatifs
find_if (c.begin();c.end(); prédicat) 
Plus de sujets relatifs à : Comfirmer moi si mon predicat est bon ???


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)