From 25becf466ec26276cfb14e555662f725654e1a0a Mon Sep 17 00:00:00 2001 From: Pablo Astigarraga Date: Mon, 05 Apr 2010 12:22:14 +0000 Subject: Merge branch 'pote' --- diff --git a/fracciones.activity/fractionlogic.py b/fracciones.activity/fractionlogic.py index 57a6d00..ee24011 100644 --- a/fracciones.activity/fractionlogic.py +++ b/fracciones.activity/fractionlogic.py @@ -80,57 +80,94 @@ class FractionLogic(object): +#<--Math methods for the Fraction object begin here--> 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 + """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 + 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 = lcm(fraction_1.denominator,fraction_2.numerator) + result.denominator = mcm + alt_fraction_1 = fraction_1.numerator * (fraction_1.denominator / mcm) + alt_fraction_2 = fraction_2.numerator * (fraction_2.denominator / mcm) + 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 + 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: + lcm = lcm(fraction_1.denominator,fraction_2.numerator) + result.denominator = mcm + alt_fraction_1 = fraction_1.numerator * (fraction_1.denominator / mcm) + alt_fraction_2 = fraction_2.numerator * (fraction_2.denominator / mcm) + 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 + 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 + inverse_fraction = Fraction() + inverse_fraction.numerator = fraction_2.denominator + inverse_fraction.denominator = fraction_2.numerator + return multiply(fraction_1,fraction_2) + +def reduce(fraction): + same_fraction = False + while not same_fraction: + same_fraction = True + for i in range(1,10): + if (fraction % i == 0): + fraction = fraction / i + same_fraction = False + +# the function to calculate the GCD +def gcd(num1, num2): + if num1 > num2: + for i in range(1,num2+1): + if num2 % i == 0: + if num1 % i == 0: + result = i + return result + + elif num2 > num1: + for i in range(1,num1+1): + if num1 % i == 0: + if num2 % i == 0: + result = i + return result + + else: + result = num1*num2/num1 + return result + +# the function to calculate the LCM +def lcm(num1, num2): + result = num1*num2/gcd(num1,num2) + return result \ No newline at end of file -- cgit v0.9.1