// Arbitrary precision arithmetic (software) Algoritmo n_digits_adder10 Leer cantidad_digitos // Leer los dos numeros como textos Leer numero1,numero2 // Imprimir numero1 + numero2 // Sacar los digitos de los dos numeros y ponerlos en arreglos Dimension arr1[cantidad_digitos] pos_arr <- cantidad_digitos Para pos_texto <- Longitud(numero1) Hasta 1 Con Paso -1 Hacer // Imprimir Sin Saltar Subcadena(numero1, pos, pos), "," digito <- ConvertirANumero(Subcadena(numero1,pos_texto,pos_texto)) arr1[pos_arr] <- digito pos_arr <- pos_arr-1 FinPara // Imprimir Para indice<-1 Hasta cantidad_digitos Hacer Escribir arr1[indice],',' Sin Saltar FinPara // TODO: Eliminar la redundancia de codigo Dimension arr2[cantidad_digitos] pos_arr <- cantidad_digitos Para pos_texto<-Longitud(numero2) Hasta 1 Con Paso -1 Hacer // Imprimir Sin Saltar Subcadena(numero1, pos, pos), "," digito <- ConvertirANumero(Subcadena(numero2,pos_texto,pos_texto)) arr2[pos_arr] <- digito pos_arr <- pos_arr-1 FinPara // Imprimir Escribir '' // Separar con un cambio de linea Para indice <- 1 Hasta cantidad_digitos Hacer Escribir arr2[indice],',' Sin Saltar FinPara // Hacer la suma Dimension resultado[cantidad_digitos + 1] acarreo <- 0 Para indice <- cantidad_digitos Hasta 1 Con Paso -1 Hacer suma <- arr1[indice] + arr2[indice] + acarreo resultado[indice + 1] <- suma MOD 10 acarreo <- trunc(suma/10) FinPara resultado[1] <- acarreo // Imprimir Escribir '' // Separar con un cambio de linea Para indice <- 1 Hasta cantidad_digitos + 1 Hacer Escribir resultado[indice],',' Sin Saltar FinPara FinAlgoritmo