In: Computer Science
At the moment this code only give you results for whatever fraction you put for "x", and "y" inside the main code. How do I get this existing code to ask the user to enter a fraction, and then ask another questions for another fraction, and then display the results of adding, multiplying, and dividing the fractions?
Something like:
"Please enter the first fraction: " >>> 1/2
"Please enter the second fraction:" >>> 5/3
Result of adding = x/x
Result of multiplying = x/x
Result for dividing = x/x
*** DO NOT CHANGE THE CODE TOO MUCH. MAIN GOAL IS TO ONLY MAKE IT ASK THE USER FOR INPUT ***
def gcd(m,n):
while m%n != 0:
oldm = m
oldn = n
m = oldn
n = oldm%oldn
return n
class Fraction:
def __init__(self,top,bottom):
self.num = top
self.den = bottom
def __str__(self): #We cannot print out
fractions because python does not know how to convert an object
into a string
return str(self.num)+"/"+str(self.den)
def __add__(self,otherfraction):
newnum =
self.num*otherfraction.den + \
self.den*otherfraction.num
newden = self.den *
otherfraction.den
common =
gcd(newnum,newden)
return Fraction(newnum//common,newden//common)
def __eq__(self, other):
firstnum = self.num *
other.den
secondnum = other.num *
self.den
return firstnum ==
secondnum
def __mul__(self,other):
newnum =
self.num*other.num
newden =
self.den*other.den
common=gcd(newnum,newden)
return Fraction(newnum//common, newden//common)
def __truediv__ (self, other):
newnum =
self.num*other.den
newden =
self.den*other.num
common=gcd(newnum,newden)
return
Fraction(newnum//common, newden//common)
def main():
x = Fraction(10,7)
y = Fraction(5,9)
print(x+y)
print(x*y)
print(x/y)
main()

def gcd(m,n):
while m%n != 0:
oldm = m
oldn = n
m = oldn
n = oldm%oldn
return n
class Fraction:
def __init__(self,top,bottom):
self.num = top
self.den = bottom
def __str__(self): #We cannot print out fractions because python does not know how to convert an object into a string
return str(self.num)+"/"+str(self.den)
def __add__(self,otherfraction):
newnum = self.num*otherfraction.den + \
self.den*otherfraction.num
newden = self.den * otherfraction.den
common = gcd(newnum,newden)
return Fraction(newnum//common,newden//common)
def __eq__(self, other):
firstnum = self.num * other.den
secondnum = other.num * self.den
return firstnum == secondnum
def __mul__(self,other):
newnum = self.num*other.num
newden = self.den*other.den
common=gcd(newnum,newden)
return Fraction(newnum//common, newden//common)
def __truediv__ (self, other):
newnum = self.num*other.den
newden = self.den*other.num
common=gcd(newnum,newden)
return Fraction(newnum//common, newden//common)
def readFraction():
line = input('Please enter a fraction: ')
x, y = line.split('/')
x, y = int(x), int(y)
return Fraction(x, y)
def main():
x = readFraction()
y = readFraction()
print('Result of adding = ', x+y)
print('Result of multiplying = ', x*y)
print('Result of dividing = ', x/y)
main()
************************************************** You would have to parse user input and create a fraction object.. like i did in readFraction method. Thanks for your question. We try our best to help you with detailed answers, But in any case, if you need any modification or have a query/issue with respect to above answer, Please ask that in the comment section. We will surely try to address your query ASAP and resolve the issue.
Please consider providing a thumbs up to this question if it helps you. by Doing that, You will help other students, who are facing similar issue.