Bonjour,
Je me retrouve avec un double problème sans trouver de façon "simpliste" et efficace pour le résoudre.
Programme actuel:
J'ai un programme qui en fonction de la valeur (float), entrée en argument, va faire appel à une fonction définie.
Mon programme est tel que pour les valeurs comprises:
- entre [0 et 20[: On appelle la fonction A
- entre [20 et 50[: On appelle la fonction B
- entre [50 et infinie[: On appelle la fonction C
Ces intervalles sont codés en dur dans mon fichier
Pour le moment rien de bien compliqué.
Maintenant, je voudrais definir ces intervalles et les passer en argument de mon programme de telle sorte que ces intervalles puissent être définis par l'utilisateur.
Ainsi l'utilisateur pourrait écrire:
./prog -definition 1:0-30,2:30-60,1:60-70,3:70-+ 'liste de valeur'
Mon premier soucis est le suivant:
j'arrive à recupérer sans soucis la chaine (string) "1:0-30,2:30-60,1:60-70,3:70-+"
Mais je ne trouve pas de moyen simple de la parser.
Je veux dire par là que je n'arrive pas à prendre direct les nombres, je dois faire un check caractère par caractère récupérer le debut de la chaine et la fin et la convertir en suite en int. C'est très lourd.
Voulant être le plus optimal, quelqu'un aurait il des astuces pour le faire ?
Mon second soucis est le suivant:
Comment arriver à faire des intervalles propres?
Sachant que les fonctions peuvent être définies à plusieurs endroits, je n'arrive pas à écrire un truc simple qui puisse prendre cet ensemble d'intervalle défini par l'utilisateur, de sorte à avoir un truc comme ça (en se basant sur l'exemple précédent):
Utilise l'algo:
- A si la valeur est entre [0 et 30[ ou [60,70[
- B si la valeur est entre [30 et 60 [
- C pour le reste.
Si quelqu'un a une idée de structure, ou des astuces/algo pour coder ça en C proprement, je suis preneur aussi.
Merci d'avance.
Partager