MAB225 – Computação II – Aula 14/04/2011

MAB 225 - Computação II - Fabio Mascarenhas

Classe Fração (14/04/2011)

def mdc(n1, n2):
    while n1 % n2 != 0:
        r = n1 % n2
        n1 = n2
        n2 = r
    return n2

def mmc(n1, n2):
    d = mdc(n1, n2)
    return (n1 * n2) / d

class Fracao:
    def __init__(self, num, den=1):
        self.num = num
        self.den = den
        self.simp()
    def __add__(self, outro):
        # outro e um objeto Fracao
        den_r = self.den * outro.den
        num_r = (den_r/self.den)*self.num + (den_r/outro.den)*outro.num
        return Fracao(num_r, den_r)
    def __sub__(self, outro):
        # outro e um objeto Fracao
        den_r = self.den * outro.den
        num_r = (den_r/self.den)*self.num - (den_r/outro.den)*outro.num
        return Fracao(num_r, den_r)
    def __mul__(self, outro):
        return Fracao(self.num*outro.num, self.den*outro.den)
    def __div__(self, outro):
        return Fracao(self.num*outro.den, self.den*outro.num)
    def __repr__(self):
        if self.den == 1:
            return str(self.num)
        else:
            return str(self.num) + "/" + str(self.den)
    def __eq__(self, outro):
        return self.num == outro.num and self.den == outro.den
    def __lt__(self, outro):
        z =  (self - outro)
        return z.num < 0
    def __le__(self, outro):
        z =  (self - outro)
        return z.num <= 0
    def __gt__(self, outro):
        z =  (self - outro)
        return z.num > 0
    def __ge__(self, outro):
        z =  (self - outro)
        return z.num >= 0
    def simp(self):
        d = mdc(self.num, self.den)
        self.num = self.num / d
        self.den = self.den / d
        return self