Advertisement
szymcio10

Operacje na ułamkach - Python

Apr 6th, 2020
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.84 KB | None | 0 0
  1. from fractions import Fraction
  2. class ulamki:
  3.     counter=0
  4.     def __init__(self,*args):
  5.         if(len(args)==2):
  6.             self.licznik=int(args[0])
  7.             self.mianownik=int(args[1])
  8.             ulamki.counter += 1
  9.         elif(len(args)==1):
  10.             liczba=str(Fraction(str(args[0])))
  11.             liczba=liczba.split('/')
  12.             self.licznik=int(liczba[0])
  13.             self.mianownik=int(liczba[1])
  14.             ulamki.counter += 1
  15.         else:
  16.             raise ValueError
  17.  
  18.     def __str__(self):
  19.         return "%s/%s" %(self.licznik,self.mianownik)
  20.  
  21.     def __mul__(self, other):
  22.         return ulamki(self.licznik*other.licznik,self.mianownik*other.mianownik)
  23.  
  24.     def __truediv__(self, other):
  25.         return ulamki(self.licznik*other.mianownik,self.mianownik*other.licznik)
  26.  
  27.     def __add__(self, other):
  28.         mianownik = self.__nwd(self.mianownik,other.mianownik)
  29.         mianownik = (self.mianownik*other.mianownik)/mianownik
  30.  
  31.         licznik = ((self.licznik)*(mianownik/self.mianownik)+(other.licznik)*(mianownik/other.mianownik))
  32.  
  33.         return ulamki(licznik,mianownik)
  34.  
  35.     def __sub__(self,other):
  36.         mianownik = self.__nwd(self.mianownik, other.mianownik)
  37.         mianownik = (self.mianownik * other.mianownik) / mianownik
  38.  
  39.         licznik = ((self.licznik) * (mianownik / self.mianownik) - (other.licznik) * (mianownik / other.mianownik))
  40.  
  41.        
  42.         if(licznik==0):
  43.             ulamki.counter+=1
  44.             return 0
  45.  
  46.         return ulamki(licznik, mianownik)
  47.  
  48.     def __nwd(self,a,b):
  49.         if(a==0):
  50.             return b
  51.         return self.__nwd(b%a,a);
  52.  
  53. def main():
  54.     try:
  55.         u1=ulamki(1,2)
  56.         u2=ulamki(0.5)
  57.         u3=u1-u2
  58.         print(u3)
  59.         print(ulamki.counter)
  60.     except:
  61.         print("Błąd!")
  62.  
  63. if __name__=='__main__':
  64.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement