magicvinni
Messages postés235Date d'inscriptionvendredi 25 avril 2003StatutMembreDernière intervention26 juillet 2010
-
4 oct. 2002 à 18:40
munstef
Messages postés6Date d'inscriptionlundi 20 décembre 2004StatutMembreDernière intervention20 décembre 2004
-
20 déc. 2004 à 14:52
Quelqun connait il une fonction ( ou une unité plutot) qui permettrai de faire un truc du genre function evaluation(chaine:string):integer et qui reverrai le résultat de la chaine exemple
evaluation("3+5*2") renvoie 13.
Merci d'avance
A voir également:
Calculer le nombre de voyelles dans une chaine en c
cs_Bestiol
Messages postés833Date d'inscriptiondimanche 6 janvier 2002StatutMembreDernière intervention 3 novembre 20051 4 oct. 2002 à 21:49
Je pense que tu peux essayer de le faire tout seul partant du principe que tout ce qui est entre deux signes arithmétiques (j'entends par là + - * /) est forcément un chiffre... Tu peux donc essayer d'utiliser un pos(...) en testant la présence des opérateurs dans la chaine, puis récupérer les nombres puis enfin effectuer les opérations en respectant les priorités !
magicvinni
Messages postés235Date d'inscriptionvendredi 25 avril 2003StatutMembreDernière intervention26 juillet 2010 5 oct. 2002 à 10:34
J'y avias bien pensé, mais j'aurais aimé une routine qui faisait aussi COS, SIN, LN...en plus, il y a le problème des nombres negatifs...C'est faisable, mais si ca existait deja, ce serait pas mal de temps de gagne pour mon projet :)
Merci
cs_Bestiol
Messages postés833Date d'inscriptiondimanche 6 janvier 2002StatutMembreDernière intervention 3 novembre 20051 5 oct. 2002 à 14:10
Evidemment, si c'est aussi poussé !!! Je te comprend très bien ! je vais voir si j'arrive à trouver quelque chose, mais tu peux, pour ta part, chercher sur delphi300.com ou torry.net, par exemple...
Bonne prog' !
Bestiol.
PS: D'ailleurs, j'en profite pour te retourner une question : A quoi correspond l'opération LN ?? Je ne l'ai jamais utilisée mais déjà rencontrée, et j'aimerais savoir à quoi elle sert... Merci !
magicvinni
Messages postés235Date d'inscriptionvendredi 25 avril 2003StatutMembreDernière intervention26 juillet 2010 5 oct. 2002 à 15:00
Sympas, merci, e vais regarder aussi de mon cote.
J'ai mis ln ^pour la fonction logarythme népérien. Voila (si tu ne connais pas cette fonction dis le moi)
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Bestiol
Messages postés833Date d'inscriptiondimanche 6 janvier 2002StatutMembreDernière intervention 3 novembre 20051 5 oct. 2002 à 16:38
Justement... Je connais pas cette fonction !!!
Je viens de passer en 1ère S et jamais en cours on en a parlé !! C'est certainement normal, mais si tu avais la gentillesse de m'expliquer ce que c'est, ou sinon où je peux avoir des infos, ce serait sympa !
Sinon, pour ta question (!!) :
Je suis allé voir sur delphi super page, et j'ai peut-être trouvé ce que tu cherches... Il s'agit apparemment d'une suite de 8 composants juste pour des maths, et y en a un qui a l'air de faire ce qu tu veux ! (j'ai pas essayé, mais d'après ce que j'ai compris de la description en Anglais c'est ça !)
magicvinni
Messages postés235Date d'inscriptionvendredi 25 avril 2003StatutMembreDernière intervention26 juillet 2010 6 oct. 2002 à 19:25
-------------------------------
Réponse au message :
-------------------------------
Justement... Je connais pas cette fonction !!!
Je viens de passer en 1ère S et jamais en cours on en a parlé !! C'est certainement normal, mais si tu avais la gentillesse de m'expliquer ce que c'est, ou sinon où je peux avoir des infos, ce serait sympa !
Sinon, pour ta question (!!) :
Je suis allé voir sur delphi super page, et j'ai peut-être trouvé ce que tu cherches... Il s'agit apparemment d'une suite de 8 composants juste pour des maths, et y en a un qui a l'air de faire ce qu tu veux ! (j'ai pas essayé, mais d'après ce que j'ai compris de la description en Anglais c'est ça !)
Merci beaucoup, je vais y jetter coup d'oeil . Pour la fonction ln, c'est normal, c'est le programme de Terminale S :) . (Je suis prof de Math). Cette fonction a plein de proporiétes interessantes en particulier ln(a^n)=nln(a). (Utile pour resoudre par exemple 2^n>500). Voila
munstef
Messages postés6Date d'inscriptionlundi 20 décembre 2004StatutMembreDernière intervention20 décembre 2004 20 déc. 2004 à 14:52
tu peux commencer ainsi :
type
Tsymbole = (plus, moins, mult, divi, opp, abs, ln, exp , sin, ...,arcTan, reel);
PFonction = ^TFonction;
TFonction = record
case symbole : TSymbole of
plus .. puis : (gauche, droite : PFonction);
opp .. arcTan : (argument : PFonction);
reel : (valeur : Real);
end;
pour "compiler" l'expression :
function LireExpression : PFonction;
function LireTerme : PFonction;
function LireFacteur : PFonction;
begin
if LireCar = '(' then begin
LireExpression;
if LireCar <> ')' then Error;
end
else begin
new (result);
result.Symbole := LireSymbole;
if result.symbole = reel then
result.valeur := Lirevaleur;
end;
end;
begin {-- LireTerme --}
result := LireFacteur;
while lirecar in ['*', '/'] do begin
new (temp);if carlu '*' then temp.symbole mult else temp.symbole :=divi;
temp.gauche := result;
temp.droite := LireFacteur;
result := temp;
end;
end;
begin {-- LireExpression --}
{-- même principe avec '+' et '-' et LireTerme--}
end;
enfin pour l'évaluation des expressions ainsi formées :
function evaluation (f :Pfunction) : Real;
begin
case f^.symbole of
reel : result := f^.valeur;
opp : result := - evaluation (f^.argument);
....
plus : result := evaluation (f^.gauche) + evaluation (f^.droite);
...
end
end;
je te laisse le soin de finir cette source en complétant les fonctions et
définir les fonctions telle que lirecar, liresymbole ...
normalement avec ça, tu peux interpréter des expressions :
sin abs -4 en tant que sin (abs (-4))
4 * tan (3/2)
...
En ajoutant "unknown" dans TSymbole tu pourrais lire des fonctions avec inconnue(s)
et de les dériver ...
Je sais, c'est un peu long, si quelqu'un à plus simple