Notation polonaise inversée

Utilisation de Xcas

Modérateur : xcasadmin

magicvinni
Messages : 40
Inscription : dim. août 26, 2007 7:07 am
Contact :

Notation polonaise inversée

Message par magicvinni » jeu. déc. 23, 2010 9:52 pm

Bonjour,

Existe-il un moyen de transformer une expression en notation polonaise inversée ? Mon but est d'analyser si une expression est factorisée ou non.

Merci,

Vincent

parisse
Messages : 5894
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Notation polonaise inversée

Message par parisse » ven. déc. 24, 2010 8:23 am

Voila un petit programme récursif qui renvoie sous forme polonaise inversée une expression. Ca marche pour les opérations générales simples (1, 2 arguments et opérateurs + et *), mais pas pour des cas d'opérateurs compliqués comme int etc. où il faudrait l'adapter.

Code : Tout sélectionner

torpn(obj):={
  local n,j,f,som,res;
  si type(obj)!=DOM_SYMBOLIC alors return obj fsi;
  som:=sommet(obj);
  f:=feuille(obj);
  si type(f)!=DOM_LIST alors return torpn(f),som fsi;
  n:=size(f);
  si n==1 alors return torpn(f[0]),som fsi;
  res:=torpn(f[0]),torpn(f[1]),som;
  pour j de 2 jusque n-1 faire
    res:=res,torpn(f[j]),som;
  fpour;
  return res;
}

magicvinni
Messages : 40
Inscription : dim. août 26, 2007 7:07 am
Contact :

Re: Notation polonaise inversée

Message par magicvinni » ven. déc. 24, 2010 11:41 am

Bonjour,

Merci pour cette réponse rapide qui convient parfaitement. En plus j'ai du coup découvert les fonctions sommet et feuille qui vont grandement m'aider.

Bonnes fêtes de fin d'année,

Vincent

Répondre