Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPablo Astigarraga <poteland@gmail.com>2010-04-05 12:22:14 (GMT)
committer Pablo Astigarraga <poteland@gmail.com>2010-04-05 12:22:14 (GMT)
commit25becf466ec26276cfb14e555662f725654e1a0a (patch)
tree6785fa1967149e0169428ce19fa091e1258fce31
parent4e790036f11f011e410d65460c642b1eba96b809 (diff)
parentb30b3ca9f55902b959c2ce1e7bd22db2d0bf21ac (diff)
Merge branch 'pote'
-rw-r--r--fracciones.activity/fractionlogic.py125
1 files changed, 81 insertions, 44 deletions
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