1. Exercici 7.1
1 # -*- encoding:utf-8 -*-
2 class Fraccio(object):
3
4 def __init__(self,n,d):
5
6 self.n = n
7 self.d = d
8 try:
9 self.n/self.d
10 except ZeroDivisionError:
11 print " El divisor no pot ser 0"
12
13
14 def __repr__(self):
15 a= self.n /mcd(self.n,self.d)
16 b= self.d /mcd(self.n,self.d)
17 return "Fraccio(%i,%i)" % (a,b)
18
19 def __add__(self,a):
20
21 c= (self.n * a.d) + (self.d * a.n)
22 d= (self.d * a.d)
23 return Fraccio(c,d)
24
25 def __sub__(self,a):
26
27 c= (self.n * a.d) - (self.d * a.n)
28 d= self.d * a.d
29 return Fraccio(c,d)
30
31 def __mul__(self,a):
32
33 c= self.n * a.n
34 d= self.d *a.d
35 return Fraccio(c,d)
36
37
38 def __truediv__(self,a):
39 c= self.n * a.d
40 d= self.d * a.n
41 return Fraccio(c,d)
42
43
44 def mcd(a,b):
45 """
46 Funcio recursiva que calcula
47 el maxim comu divisor de a i b
48 mitjançant l'algoritme d'euclides
49 El fem servir per simplificar les
50 fraccions.
51 """
52 if b ==0:
53 return a
54 else:
55 return mcd(b,a % b)