Opérations arithmétique dans chaine
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
Bonjour,
Après concaténation dynamique d'une chaine représentant une opération arithmétique, je souhaiterai effectuer le calcul correspondant...

Ch="3+4*2"

Résultat=11 et non 14...

Quelqu'un aurait-il une idée (la plus simple de préférence :p) pour m'aider à résoudre ce problème ?

merci d'avance

Contribution le : 20/07/2006 16:35
Créer un fichier PDF de la contribution Imprimer


Re: Opérations arithmétique dans chaine
Animateur WDF
Inscrit:
22/11/2004 11:23
Post(s): 255
Bonjour,

As-tu essayé de mettre des parenthèses. Sait-on jamais ...

Ch="3+(4*2)"


Cordialement

Contribution le : 20/07/2006 17:08
Créer un fichier PDF de la contribution Imprimer


Re: Opérations arithmétique dans chaine
DSI WDF
Inscrit:
03/12/2004 07:46
Post(s): 235
C'est normal que le résultat de l'expression :
3+4*2 fasse 11
pourquoi voudrais-tu que la compilation dynamique change la priorité des opérateurs.
En informatique, comme en mathématique la multiplication est prioritaire sur l'addition.
Si tu veux changer cette priorité tu dois utiliser les parenthéses qui ont une priorité encore supérieure à la multiplication.

Contribution le : 20/07/2006 17:37
Créer un fichier PDF de la contribution Imprimer


Re: Opérations arithmétique dans chaine
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
D'abord merci pour vos réponses même si celles-ci ne correspondent pas à mes attentes.
Peut-être ne me suis je pas assez bien exprimé ou bien avez-vous mal lu ma question...
Pour cela je vais la reformuler

Je suis amené à créer une chaine contenant une expression arithmétique uniquement composée d'opérateurs basiques(+/*-) sans parenthésage.Bien entendu je ne peux controler ni l'ordre ni le contenu de cette chaine.

Prenons cette fois comme exemple une chaine de type "3/5-2*3".Mon seul souhait est de pouvoir faire le calcul le plus simplement possible de cette chaine... mon idée serait de transformer l'opérateur typé par une chaîne en un opérateur réel comme l'on peut convertir une chaine en nombre avec Val.

Merci d'avance pour vos contributions

Contribution le : 20/07/2006 22:38
Créer un fichier PDF de la contribution Imprimer


Re: Opérations arithmétique dans chaine
DSI WDF
Inscrit:
03/12/2004 07:46
Post(s): 235
Bien poser la question c'est déjà détenir la réponse.
//-------------------
sChTmp est une chaine = "3+(4*2)"
sResultatCompile est une chaîne
SI Compile("Proc_dynamique", sChTmp) = "" ALORS
info( ExécuteTraitement("Proc_dynamique", trtProcédure))
FIN


Bon dev

Contribution le : 21/07/2006 08:10
Créer un fichier PDF de la contribution Imprimer


Re: Opérations arithmétique dans chaine
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Hum... petite correction

sChTmp est une chaine = "3+(4*2)"
cFonction est une chaine = "RENVOYER ("+sChTmp+")"
sResultatCompile est une chaîne = Compile("Proc_dynamique", sFonction)
SI  sResultatCompile = "" ALORS
   Info( ExécuteTraitement("Proc_dynamique", trtProcédure))
SINON
   Erreur(ErreurInfo())
FIN


Ensuite je rapelle ces ressources sur le sujet :
- Compilation dynamique : des formules de calcul dans vos fichiers...
- Ma réponse précédente à ce problème !

Merci d'effectuer des recherches...

De ces deux ressources j'ai créé facilement un générateur de formule dans un assistant de requeteur.

Contribution le : 21/07/2006 09:36
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: Opérations arithmétique dans chaine
DSI WDF
Inscrit:
05/05/2004 13:46
Post(s): 314
Merci beaucoup pour vos aides rapides et efficaces
Désolé de ne pas avoir approfondi mes recherches avant de poster ce sujet

Contribution le : 21/07/2006 10:43
Créer un fichier PDF de la contribution Imprimer


Re: Opérations arithmétique dans chaine
DSI WDF
Inscrit:
03/12/2004 07:46
Post(s): 235
Merci à maître Joda pour sa sage réponse, beaucoup plus exacte et complête que la mienne, jetée à la volée.
Que la Forge soit avec vous !!!

Contribution le : 21/07/2006 12:59
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2