operaciones 2 números con lista de dígitos
Publicado por jorge (4 intervenciones) el 04/11/2019 00:49:35
hola que tal, tengo que hacer un programa de operaciones de dos numeros en formato de lista de digitos. Me faltaria de multiplicación y tambien de resta, cuando el resultado es negativo.
aqui abajo muestro lo que tengo( suma; y resta con resultado positivo). muchas gracias
pd: tampoco se como hacer para que todo este en formato LIST
aqui abajo muestro lo que tengo( suma; y resta con resultado positivo). muchas gracias
pd: tampoco se como hacer para que todo este en formato LIST
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
op=input("ingrese la operacion")
nro1=input("Ingrese el primer numero: ")
nro2=input("Ingrese el segundo numero: ")
if op=="+":
def nro_a_lista(valor):
vec_nro = list(valor)
vec_nro.reverse()
if vec_nro[-1]=="-":
vec_nro=[vec_nro.pop(),vec_nro]
else:
vec_nro=["+",vec_nro]
return vec_nro
def suma(valor1, valor2):
#Iguala los tamaños de las listas, agregando tantos "0" como sea necesario
largo_v1=len(valor1[1])
largo_v2=len(valor2[1])
if largo_v1>largo_v2: #valor1 tiene mas digitos, agrego "0" en valor2
for v in range(largo_v1-largo_v2):
valor2[1].append("0")
elif largo_v2>largo_v1: #valor2 tiene mas digitos, agrego "0" en valor1
for v in range(largo_v2-largo_v1):
valor1[1].append("0")
else:
pass #tienen la misma cantidad de digitos
resultado = []
acarreo = 0
for v in range(len(valor1[1])):
resultado.append("0")
resultado[v] = (int(valor1[1][v]) + int(valor2[1][v]) + acarreo) % 10
acarreo = (int(valor1[1][v]) + int(valor2[1][v]) + acarreo) // 10
if acarreo !=0:
resultado.append(acarreo)
resultado.reverse()
return resultado
r = suma(nro_a_lista(nro1), nro_a_lista(nro2))
print(r)
if op=="-" or op=="+" and nro2<0:
nro1 = str(nro1)
nro2 = str(nro2)
nro1 = nro1.zfill(len(nro2))
nro2 = nro2.zfill(len(nro1))
resultado = []
acarreo = 0
for orden in reversed(range(len(nro1))):
n1 = int(nro1[orden])
n2 = int(nro2[orden]) + acarreo
if n1 >= n2:
acarreo = 0
resultado.append(n1-n2)
else:
acarreo = 1
resultado.append(10+n1-n2)
pinta = ' '
for orden in reversed(range(len(nro1))):
pinta += str(resultado[orden])
print (pinta)
Valora esta pregunta


0