From 4f1e3c2a62d43dac9cfd98885633271e78d8b8ae Mon Sep 17 00:00:00 2001 From: Cristian García Date: Sun, 08 Sep 2013 17:33:51 +0000 Subject: Ahora esta API al reducir suma bien las x --- diff --git a/Calculadora.py b/Calculadora.py index f5b2cd8..bf6208d 100644 --- a/Calculadora.py +++ b/Calculadora.py @@ -80,8 +80,8 @@ class Calculadora(): def resolver_ecuacion(self, ecuacion): miembros = ecuacion.split('=') - miembro1 = self.reducir_polinomios(miembros[0])[0] - miembro2 = self.reducir_polinomios(miembros[1])[0] + miembro1 = self.reducir_polinomios(miembros[0]) + miembro2 = self.reducir_polinomios(miembros[1]) miembro1_str = '' miembro2_str = '' @@ -120,7 +120,14 @@ class Calculadora(): Realizando la reducción de polinomios. """ + if operacion[0] != '+' and operacion[0] != '-': + signo = '+' + + else: + signo = '-' + operacion = self.limpiar_valor(operacion) + operacion = signo + operacion diccionario = {} if '+' in operacion: @@ -166,32 +173,41 @@ class Calculadora(): 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] for valor in lista: - if 'x' in valor and valor != '+x' and not 'e' in valor: + if 'x' in valor and not 'e' in valor: numero = valor.split('x')[0] - elif valor == '+x': - lista.remove('+x') - lista.append('+1x') - numero = '+1' + if valor == 'x': + numero = lista.index(valor) + lista.remove(valor) + lista.insert(numero, '+x') - elif valor == '-x': - lista.remove('-x') - lista.append('-1x') - numero = '-1' + if valor == '-x' or valor == '+x': + numero = valor[0] + '1' + _numero = lista.index(valor) + lista.remove(valor) + lista.insert(_numero, numero + 'x') - if not 'x' in valor and 'e' in valor: + elif not 'x' in valor and 'e' in valor: numero = str(int(valor.split('e')[0] ** valor.split('e')[1])) - if 'x' in valor and 'e' in valor: + elif 'x' in valor and 'e' in valor: numero = valor.split('xe')[0] - resultado += numero + elif not 'x' in valor and not 'e' in valor: + numero = valor + + resultado += str(numero) if x == 0: res = str(eval(resultado)) @@ -224,7 +240,6 @@ class Calculadora(): if _resultado_final[0] == '+': _resultado_final = _resultado_final[1:] - print diccionario return _resultado_final #return diccionario diff --git a/Errores conocidos b/Errores conocidos index 446e3b5..6e69cb5 100644 --- a/Errores conocidos +++ b/Errores conocidos @@ -1,12 +1,5 @@ -Operacion: -x -Traceback (most recent call last): - File "Calculadora.py", line 229, in - Calculadora(cuenta) - File "Calculadora.py", line 66, in __init__ - print self.reducir_polinomios(operacion) - File "Calculadora.py", line 189, in reducir_polinomios - res = str(eval(resultado)) + 'x' - File "", line 1 - - - ^ -SyntaxError: unexpected EOF while parsing +Al introducir x+x por ejemplo, la calculadora solo reconoce a una x, +pero si en su lugar se introduce +x+x la calculadora reconoce las dos: + +Operacion: x+x +1x -- cgit v0.9.1