2009-03-18 7 views
0

Je veux faire une calculatrice de nombres rationnelle, mais je ne sais pas comment négliger certains caractères. Par exemple, si le programme doit calculer l'expression "2/9 + 9/3" et la réponse devrait être sous forme non simplifiée, comment négliger "/" dans l'expression ci-dessus tout en prenant des entrées?Calculatrice de nombre rationnel

+0

Quel langage de programmation? – unwind

+0

Je ne vois pas le problème ici ... si vous travaillez avec des nombres fractionnaires, l'opérateur de division/devient l'indicateur de fraction, c'est-à-dire que toute division est en fait une conversion en une fraction. –

+0

Jetez un coup d'oeil au module de fraction inclus dans Python 2.6 –

Répondre

4

Je pense que vous devez définir une syntaxe/analyseur qui connaît les nombres rationnels. Pour votre entrée d'exemple que vous souhaitez retrouver avec un arbre d'analyse syntaxique tenant quelque chose comme ceci:

add(rational(2, 9) 
     rational(9, 3)) 

Ensuite, vous écririez le code qui connaît les différents trucs utilisés lors du calcul avec rationals, de sorte que le code mise en œuvre du add opération peut, par exemple, vérifier le greatest common divisor de ses arguments d'entrée, et transformer les nombres à ajouter.

Dans ce cas, il serait probablement réécrire les arguments pour être rational(2, 9) et rational(27, 9), puis faire l'addition, se terminant ainsi par rational(29, 9).

Vous pourriez avoir une fonction séparée qui simplifie, cela peut simplifier le retour à 3+rational(2, 9).