Es que son números muy altos y mi lenguaje falla en usarlos a menos que sean cadenas.
Supongamos que tenemos:
Cadena1 = "99887766554433221100";
Cadena2 = "1234567890987654321";
El número en la cadena 1 siempre será mayor que el de la 2, y en general más largo.
Y no hay , ni negativos.
Esos datos deberían facilitar hallar una solución.
He pensado en esto:
// Lo que se quiere averiguar:
Resultado = "";
// Esto es el número que ponemos encima cuando la suma de números sobrepasa 10:
SumarExtra = 0;
// Esto indica qué caracteres se van a sumar, contando desde el último:
AnterioraObtener = 0;
Repetir mientras el largo de Cadena2 > AnterioraObtener
AnterioraObtener++;
// Obtenemos un caracter de la cadena 1 y 2:
CaracterDe1aSumar = (tomamos el caracter en la posición ((largo de Cadena1)-AnterioraObtener))
// es decir, en la 1er vuelta de este ciclo tomamos los últimos caracteres de cada cadena, en la próxima tomaremos los últimos-1, en la próxima los últimos-2, etc. Las posiciones se cuentan desde 0, por eso quizá los números les parecen raros. El último caracter no está en la posición igual al largo de la cadena, sino en eso -1.
CaracterDe2aSumar = (tomamos el caracter en la posición ((largo de Cadena2)-AnterioraObtener))
SumaDeLosCaracteres = (los sumanos como si fueran números, no hay problema porque son cortos, y le sumanos SumarExtra)
Si SumaDeLosCaracteres > 9
SumaDeLosCaracteres = SumaDeLosCaracteres-10
SumarExtra = 1;
sino
SumarExtra = 0;
fin del si
Resultado = Concatenar Resultado y SumaDeLosCaracteres
fin del ciclo
DiferenciaDeLargo = Largo de Cadena1 - Largo de Cadena2
Si Cadena1 es más larga que Cadena2
// Conseguir los caracteres que no fueron sumados:
CaracteresFaltantes = (tomar los 1eros (DiferenciaDeLargo) caracteres de Cadena1).
Si SumarExtra es 1
// A CaracteresFaltantes hay que sumarle ese 1 a los caracteres mientras el resultado sea > 9
fin del si
// Concatenar CaracteresFaltantes con Resultado
sino si SumarExtra es 1
Poner "1" delante de Resultado
¿Les parece que está bien o qué error le ven y cómo se corregiría?
Otro modo quizá más simple podría ser que si por ejemplo mi lenguaje tolera hasta el número 9007199254740992, que tiene 16 caracteres, puedo partir los números en 14 caracteres, sumarlos nomal, y... No sé bien luego, voy a tener que sumar strings como puse arriba ¿no? No parece más simple entonces.
¿Alguna alternativa?