Problème test if()

Problème test if() - C - Programmation

Marsh Posté le 13-10-2010 à 01:26:45    

Bonjour,
 
   J'ai un petit problème en C. Dans une fonction de recherche sur un liste chainée, je passe 4 paramètres.
La liste chaine et trois indicateurs.
 
   Si les indicateurs (notons-les A, B et C) sont de valeur 1 alors une condition de test supplémentaire doit être exécutée.
 
   Il y a donc 2^3 soit 8 tests différents.
 
   J'aimerais faire un test différent pour les 8 entrées mais j'aimerais synthétiser comme ceci
 
   Si A, testA =  "xxx" sinon testA = ""
   Si B, testB =  "yyy" sinon testB = ""
   Si C, testC = "zzz" sinon testC = ""
 
   et apres faire if( testA && testB && testC)
 
   en gros est-ce que je peux mettre le contenu du test dans un string (tableau de char) et concatener à la fin toutes ces chaines pour obtenir mon test final ? ou suis-je obligé de faire 8 tests différents?
 
  J'espère que c'est clair...  
 
  Un petit exemple ....

Code :
  1. int i = 5;
  2. int j = 6;
  3. char* monTest = "i<j";


et après faire un truc comme :  

Code :
  1. if(monTest)   qui serait executé comme   if(i<j)
  2.   ...


  Merci par avance

Reply

Marsh Posté le 13-10-2010 à 01:26:45   

Reply

Marsh Posté le 13-10-2010 à 07:53:40    

Et ben ça s'appelle coder un interpréteur.
Sinon tu convertis tes chaînes avec strtol / sscanf et après tu compares tes entiers.

Reply

Marsh Posté le 13-10-2010 à 12:02:00    

oui mais si dans mon if je veux mettre  
char* maCh1 = "toto"
char* maCh2 = "tata"
 
char* monTest = "strcomp(maCh1,maCh2)==0"
 
comment je fais pour faire if(monTest) ??

Reply

Marsh Posté le 13-10-2010 à 14:38:51    

on est pas en PHP, ici, on ne met pas de code dans des chaines de caractère [:pingouino]


---------------
last.fm
Reply

Marsh Posté le 16-10-2010 à 07:48:55    

monTest doit être un pointeur de fonction qui pointe vers une fonction montest. Ca c'est si on connait à l'avance toutes les fonctions test possibles, que tu écriras toi-même.
Si on ne les connait pas et que ça peut être n'importe quoi, par exemple la possibilité offerte à l'utilisateur d'écrire lui-même n'importe quel test, il faut écrire un interpréteur ou plus simplement en intégrer un existant (comme Lua par exemple). Offrir la possibilité à l'utilisateur d'écrire lui-même son code est une extension très puissante d'un programme qui est presque toujours payante, mais je suppose que tu en es pas là.


Message édité par el muchacho le 16-10-2010 à 07:57:02

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 16-10-2010 à 09:48:21    

Il te suffit d'attribuer le résultat du test à ta variable.
 

Code :
  1. int i = 5;
  2. int j = 6;
  3. bool monTest = i < j;
  4. if (monTest) {
  5.     // Vrai
  6. } else {
  7.     // Faux.
  8. }

Reply

Marsh Posté le 17-10-2010 à 00:42:44    

M Orthographe a écrit :

...
 
   J'aimerais faire un test différent pour les 8 entrées mais j'aimerais synthétiser comme ceci
 
   Si A, testA =  "xxx" sinon testA = ""
   Si B, testB =  "yyy" sinon testB = ""
   Si C, testC = "zzz" sinon testC = ""
 
   et apres faire if( testA && testB && testC)
 ...

Au lieu de concaténer les test à effectuer, est-ce que tu peux concaténer leurs résultats ?
si A , resulta = "le test à faire" sinon resulta=1
si B , resultb = "le test à faire" sinon resultb=1
si C , resultc = "le test à faire" sinon resultc=1
 
et enfin : if (resulta && resultb && resultc) ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed