rationnel.py
rationnel.py — 3.6 KB
Contenu du fichier
''' ********************************************************************** Fichier rationnel.py Classe qui implante le type rationnel auteur gabriel girard date 2016 Entree : toutes les fonctions ont un rationnel comme paramètre implicite (self) ********************************************************************** ''' class Rationnel: #------------------------------------------------ # Initialisation du rationne (0/1 par défaut) # Entree : (paramètre) numérateur et dénominateur # def __init__(self, num=0, denom=1): self.num = num if denom != 0: self.denom = denom else: print("Dénominateur nul") self.num = 0 self.denom = 1 #------------------------------------------------ # Prépare le rationnel pour impression # Sortie : (retour) rationnel en chaine de car. # def __str__(self): return str(self.num) + "/" + str(self.denom) #------------------------------------------------ # Simplifie un rationnel # def simplifier(self): if self.num == 0: self.denom = 1 else: i = self.num if i < 0: i = -i j = self.denom # recherche du plus grand commun diviseur while i != j: if i > j: i -= j else: j -= i self.num = int(self.num / i) self.denom = int(self.denom / i) #------------------------------------------------ # Met deux rationnels sur le même dénominateur # Entree : (parametre) rationnel def m_deno(self, r): if self.denom != r.denom: self.num *= r.denom r.num *= self.denom self.denom *= r.denom r.denom = self.denom #------------------------------------------------ # Fait la somme de deux rationnels # Entree : (parametre) rationnel # Sortie : (retour) un rationnel def __add__(self, r): t = Rationnel() t.num = self.num t.denom = self.denom t.m_deno(r) t.num += r.num t.simplifier() return t #------------------------------------------------ # Multiplie deux rationnels # Entree : (parametre) rationnel # Sortie (retour) un rationnel def __mul__(self, r): t = Rationnel() t.num = self.num * r.num t.denom = self.denom*r.denom t.simplifier() return t #------------------------------------------------ # Compare deux rationnels # Entree : (parametre) rationnel # Sortie (retour) True/False selon la comparaison def __eq__(self, r): t1 = Rationnel() t1.num = self.num t1.denom = self.denom t2 = r t1.m_deno(t2) return t1.num == t2.num # # Code pour tester le type rationnel # def main(): nb1 = Rationnel(2, 3) nb2 = Rationnel(-4, 0) nb3 = Rationnel(2, 3) a = Rationnel(2, 3) b = Rationnel(1, 3) c = Rationnel(3, 4) print("Le rationnel nb1 vaut: ", str(nb1)) print("Le rationnel nb2 vaut: ", str(nb2)) print("Le rationnel nb3 vaut: ", str(nb3)) nb2 = nb1 * nb3 print("Le rationnel nb2 vaut: ", str(nb2)) nb2 = nb1 + b print("Le rationnel nb2 vaut: ", str(nb2)) nb2 = nb1 + c print("Le rationnel nb2 vaut: ", str(nb2)) if a == c: print("Les deux rationnels sont égaux") else: print("Les deux rationnels sont différents") if a == nb3: print("Les deux rationnels sont égaux") else: print("Les deux rationnels sont différents") if __name__ == "__main__": main()