Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCristian García <cristian99garcia@gmail.com>2013-10-04 11:12:53 (GMT)
committer Cristian García <cristian99garcia@gmail.com>2013-10-04 11:12:53 (GMT)
commitd45fabf9eec4c609c8392d9d654a72d26419ee8d (patch)
treef6857402742894f79106450788a39b8d97319aa9
parentd87186c42821c2efb261beeb5bd4e69e8210f3e5 (diff)
Cambiando la funcion a llamar cuando se presentan operaciones simples
-rw-r--r--Calculadora.py148
1 files changed, 105 insertions, 43 deletions
diff --git a/Calculadora.py b/Calculadora.py
index 092d242..72589bf 100644
--- a/Calculadora.py
+++ b/Calculadora.py
@@ -56,7 +56,7 @@ class Calculadora():
if operacion:
if not 'x' in operacion.lower():
- print self.reducir_polinomios(operacion)
+ print self.operar(operacion)
else:
if '=' in operacion:
@@ -102,6 +102,9 @@ class Calculadora():
if ' ' in valor:
valor = valor.replace(' ', '')
+ if valor[0] == '/' or valor[0] == '*':
+ valor = valor[1:]
+
elif type(valor) == list and len(valor) >= 1:
while valor[0] in OPERACIONES:
valor.remove(valor[0])
@@ -115,73 +118,81 @@ class Calculadora():
return valor
- def reducir_polinomios(self, operacion):
+ def reducir_polinomios(self, operacion, diccionario=None):
"""
Realizando la reducción de polinomios.
"""
- if operacion[0] != '+' and operacion[0] != '-':
- signo = '+'
-
- else:
- signo = '-'
+ if not diccionario:
+ if operacion[0] != '+' and operacion[0] != '-':
+ signo = '+'
+
+ else:
+ signo = '-'
- operacion = self.limpiar_valor(operacion)
- operacion = signo + operacion
- diccionario = {}
+ operacion = self.limpiar_valor(operacion)
+ operacion = signo + operacion
+ diccionario = {}
- if '+' in operacion:
- operacion = operacion.replace('+', ' +')
+ if '+' in operacion:
+ operacion = operacion.replace('+', ' +')
- if '-' in operacion:
- operacion = operacion.replace('-', ' -')
+ if '-' in operacion:
+ operacion = operacion.replace('-', ' -')
- lista = operacion.split(' ')
- lista = self.limpiar_valor(lista)
+ if '*' in operacion:
+ operacion = operacion.replace('*', ' *')
+
+ if '/' in operacion:
+ operacion = operacion.replace('/', ' /')
- for x in lista:
- if x[0] != '-' and x[0] != '+':
- _numero = lista.index(x)
- lista.remove(x)
- lista.insert(_numero, '+' + x)
+ lista = operacion.split(' ')
+ lista = self.limpiar_valor(lista)
- if 'x' in x and not 'e' in x:
- if not diccionario.get(1):
- diccionario[1] = []
+ for x in lista:
+ if x[0] != '-' and x[0] != '+' and x[0] != '*' and x[0] != '/':
+ _numero = lista.index(x)
+ lista.remove(x)
+ lista.insert(_numero, '+' + x)
- diccionario[1].append(x)
+ if 'x' in x and not 'e' in x:
+ if not diccionario.get(1):
+ diccionario[1] = []
- elif 'x' in x and 'e' in x:
- numero = str(int(x.split('e')[1]))
+ diccionario[1].append(x)
- if not diccionario.get(numero):
- diccionario[numero] = []
+ elif 'x' in x and 'e' in x:
+ numero = str(int(x.split('e')[1]))
- diccionario[numero].append(x)
+ if not diccionario.get(numero):
+ diccionario[numero] = []
- elif not 'x' in x and 'e' in x:
- x = str(int(x.split('e')[0]) ** int(x.split('e')[1]))
+ diccionario[numero].append(x)
- if not diccionario.get(0):
- diccionario[0] = []
+ elif not 'x' in x and 'e' in x:
+ x = str(int(x.split('e')[0]) ** int(x.split('e')[1]))
- diccionario[0].append(x)
+ if not diccionario.get(0):
+ diccionario[0] = []
- else: # not 'x' in x and not 'e' in x:
- if not diccionario.get(0):
- diccionario[0] = []
+ diccionario[0].append(x)
- diccionario[0].append(str(x))
+ else: # not 'x' in x and not 'e' in x:
+ if not diccionario.get(0):
+ diccionario[0] = []
- if x == '-x' or x == '+x':
- numero = lista.index(x)
- lista.remove(x)
- lista.insert(numero, x[0] + '1x')
+ diccionario[0].append(str(x))
+
+ if x == '-x' or x == '+x':
+ numero = lista.index(x)
+ lista.remove(x)
+ lista.insert(numero, x[0] + '1x')
for x in diccionario:
resultado = ''
lista = diccionario[x]
+ print lista
for valor in lista:
if 'x' in valor and not 'e' in valor:
@@ -197,6 +208,56 @@ class Calculadora():
_numero = lista.index(valor)
lista.remove(valor)
lista.insert(_numero, numero + 'x')
+
+ if (valor[0] == '*' or valor[0] == '/') and 'x' in valor and 'x' in lista[lista.index(valor) - 1]:
+ resultado = ''
+ valor1 = valor
+ valor2 = lista[lista.index(valor) - 1]
+ lista.remove(valor)
+ lista.remove(valor2)
+ _numero1 = valor1.split('x')[0]
+ _numero2 = valor2.split('x')[0]
+
+ if 'e' in valor1:
+ numero1 = valor1.split('e')[1]
+
+ else:
+ numero1 = '1'
+
+ if 'e' in valor2:
+ numero2 = valor2.split('e')[1]
+
+ else:
+ numero2 = '1'
+
+ if valor[0] == '*':
+ operacion = '+'
+
+ elif operacion == '/':
+ operacion = '-'
+
+ cuenta = self.limpiar_valor(numero1 + operacion + numero2)
+ exponente = str(eval(cuenta))
+ print exponente
+
+ if exponente == '1':
+ final = 'x'
+
+ elif int(exponente) > 1 or int(exponente) < 1:
+ final = 'xe' + exponente
+
+ resultado = self.limpiar_valor(_numero1 + valor[0] + _numero2 + final)
+ #print resultado
+ #resultado = str(eval(resultado))
+
+ if not diccionario.get(int(exponente)):
+ diccionario[int(exponente)] = []
+
+ diccionario[int(exponente)].append(resultado)
+
+ if valor <= x:
+ print diccionario
+ self.reducir_polinomios(diccionario=diccionario)
elif not 'x' in valor and 'e' in valor:
numero = str(int(valor.split('e')[0] ** valor.split('e')[1]))
@@ -208,6 +269,7 @@ class Calculadora():
numero = valor
resultado += str(numero)
+ resultado = self.limpiar_valor(resultado)
if x == 0:
if resultado != '-':