From 4e790036f11f011e410d65460c642b1eba96b809 Mon Sep 17 00:00:00 2001 From: Pablo Astigarraga Date: Mon, 05 Apr 2010 08:05:58 +0000 Subject: Merge branch 'pote' --- diff --git a/fracciones.activity/fractionlogic.py b/fracciones.activity/fractionlogic.py index 96dc506..57a6d00 100644 --- a/fracciones.activity/fractionlogic.py +++ b/fracciones.activity/fractionlogic.py @@ -13,14 +13,27 @@ class Fraction(object): def __init__(self): self.numerator = None self.denominator = None - + def __eq__(self,other_fraction): if (self.numerator * other_fraction.denominator == self.denominator * other_fraction.numerator) and type(other_fraction) is Fraction: return True else: return False + def __ne__(self,other_fraction): + if (self.numerator * other_fraction.denominator != self.denominator * other_fraction.numerator): + return True + else: + return False + def __add__(self,other_fraction): + if not (type(other_fraction) is Fraction): + raise Exception("Fraction Objects only allow addition with other Fraction objects") + else: + return calculate(self,other_fraction,"+") + + + class FractionLogic(object): def __init__(self): @@ -64,3 +77,60 @@ class FractionLogic(object): if self.fraction.denominator is None: return "" return ""%(self.fraction.numerator,self.fraction.denominator) + + + + +def calculate(fraction_1,fraction_2,operator): + """Calls appropiate method depending on the operator received as an argument""" + """Requires 2 fraction objects and a one character string with the operator (+,-,*,/)""" + result = ( ) + if operator == "+" : + result = add(fraction_1,fraction_2) + elif operator == "-" : + result = substract(fraction_1,fraction_2) + elif operator == "*" : + result = multiply(fraction_1,fraction_2) + elif operator == "/" : + result = divide(fraction_1,fraction_2) + return result + +def add(fraction_1,fraction_2): + result = Fraction() + if fraction_1.denominator == fraction_2.denominator : + result.numerator = fraction_1.numerator + fraction_2.numerator + result.denominator = fraction_1.denominator + return result + else: + mcm = fraction_1.denominator * fraction_2.denominator + result.denominator = mcm + alt_fraction_1 = fraction_1.numerator * fraction_2.denominator + alt_fraction_2 = fraction_2.numerator * fraction_1.denominator + result.numerator = alt_fraction_1 + alt_fraction_2 + return result + +def substract(fraction_1,fraction_2): + result_fraction = Fraction() + if fraction_1.denominator == fraction_2.denominator : + result.numerator = fraction_1.numerator - fraction_2.numerator + result.denominator = fraction_1.denominator + return result + else: + mcm = fraction_1.denominator * fraction_2.denominator + result.denominator = mcm + alt_fraction_1 = fraction_1.numerator * fraction_2.denominator + alt_fraction_2 = fraction_2.numerator * fraction_1.denominator + result.numerator = alt_fraction_1 - alt_fraction_2 + return result + +def multiply(fraction_1,fraction_2): + result = Fraction() + result.numerator = fraction_1.numerator * fraction_2.numerator + result.denominator = fraction_1.denominator * fraction_2.denominator + return result + +def divide(fraction_1,fraction_2): + inverse_fraction = Fraction() + inverse_fraction.numerator = fraction_2.denominator + inverse_fraction.denominator = fraction_2.numerator + return multiply(fraction_1,fraction_2) \ No newline at end of file diff --git a/fracciones.activity/fractionpresentation.py b/fracciones.activity/fractionpresentation.py index 5a73b4b..a6dc54e 100644 --- a/fracciones.activity/fractionpresentation.py +++ b/fracciones.activity/fractionpresentation.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- """ -Contain the presentation of the game, a widget descendant from container. +Contains the presentation of the game, a widget descendant from container. """ import logging -- cgit v0.9.1