Buenas, quería saber si mi código es correcto, me parece que es demasiado largo pero no se me ocurre forma de simplificarlo.
Hola,
Por una parte si al final hay que hacer la suma de S +1 correspondiente al último acarreo, esa suma es más sencilla de lo que parece ese código.
Tenés dos casos:
1) Si S está terminando en 0, entonces se sustituye ese 0 por 1 y ya tenés la suma,
2) y si S tiene 1s a la derecha, entonces vas sustituyendo esos 1 por 0 (de derecha a izquierda) hasta que encuentres un 0, que lo sustituís por 1 y parás.
caso 1 caso 2
1 1 1 0 0 1 0 0 1 1 1
+ 1 + 1
--------- -------------
1 1 1 0 1 1 0 1 0 0 0
Por otra parte, sobre el desbordamiento, en el teórico dice que si los sumandos "tienen el mismo signo y el resultado es de signo opuesto, ha habido desbordamiento y el resultado es incorrecto." Entonces al final de todo, en el último if es eso lo único que tenés que controlar para ver el desbordamiento. No es necesario controlar si c~=0 en el último if, porque en teoría la suma +1 se va a detener antes.
Pruebenlo y me cuentan.Eduardo