Pagini recente » Cod sursa (job #1957315) | Cod sursa (job #2481323) | Cod sursa (job #1451162) | Cod sursa (job #2390597) | Cod sursa (job #3267937)
import math
expression_string = "0"
pos = 0
def number():
global pos
num=0
stpos=pos
if(expression_string[pos] == '+' or expression_string[pos] == '-'):
pos = pos + 1
while(pos < len(expression_string) and (expression_string[pos].isdigit() == True or expression_string[pos] == '.')):
#print(int(expression_string[pos]))
pos = pos + 1
if(pos == stpos):
pos=len(expression_string)+2
return -1
num = float(expression_string[stpos:pos])
#print(num)
return num
def term():
global pos
result = 0
if(expression_string[pos] == '('):
pos = pos + 1
result = expression()
pos = pos + 1
else:
result = number()
while(pos < len(expression_string) and (expression_string[pos] == '*' or expression_string[pos] == '/' or expression_string[pos] == '(')):
new_num = 0
prod = True
if(expression_string[pos] == '*'):
prod = 1
elif(expression_string[pos] == '/'):
prod = 0
else:
prod = 1
pos = pos - 1
pos = pos + 1
if(expression_string[pos] == '('):
pos = pos + 1
new_num = expression()
pos = pos + 1
else:
new_num = number()
if(prod == 1):
result = result * new_num
elif(prod == 0 and new_num != 0):
result = result / new_num
else:
pos=len(expression_string)+4
#print(result)
return result
def expression():
global pos
result = term()
while(pos < len(expression_string) and (expression_string[pos] == "+" or expression_string[pos] == "-")):
sign = -1
if(expression_string[pos] == "+"):
sign = 1
pos = pos + 1
result = result + term() * sign
#print(result)
return result
'''
print("Calculator test!\nEnter any mathematical expression using '(' ')' '+' '-' '*' or '/'\nType 'quit' to exit")
while(True):
expression_string = input('>>>')
if(expression_string == "quit"):
break
pos = 0
result = expression()
if(pos != len(expression_string) and pos != len(expression_string)+4):
print("Invalid string")
elif(pos==len(expression_string)+4):
print("Invalid expression")
else:
print(result)
'''
pos=0
inf = open("evaluare.in", "+r")
ouf = open("evaluare.out", "+w")
expression_string = inf.read()
ouf.write(str(int(expression())))