Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Devuelva un resultado de una multiplicación, obtenida por sumas sucesivas

22 de mayo de 2015

Hola! ¿Quién me puede ayudar a hacer un código para esta situación problemática en Python o/y JavaScript?

Creaar una función denominada “sumas” que, dados dos números enteros, devuelva como resultado su multiplicación, obtenida por sumas sucesivas. Incluya instrucciones de depuración que muestren todas las sumas que se realizan hasta obtener el resultado final.

Pruebe el comportamiento de la función cuando el primero de los dos números es negativo. ¿Qué sucede si el número negativo es el segundo?


Respuestas

#1

Tal y como has planteado la pregunta parece que te han planteado un ejercicio en clase y quieres que te lo reoslvamos. En estos casos preferimos que lo intentéis vosotros antes de daros la solución, pero te voy a ayudar con la solución de la primera parte (multiplicar números positivos solamente y con JavaScript):

var numero1 = 5;
    var numero2 = 3;
 
    var resultado = 0;
    for (var i = 0; i < numero1; i++) {
        resultado += numero2;
 
        console.log("Iteración " + (i+1) +
                    " - Sumando " + numero2 +
                    " - Resultado parcial = " +
                    resultado
        );
    }
 
    document.writeln("<p>El resultado de multiplicar " +
                     numero1 + " por " + numero2 + " es " +
                     resultado + "</p>"
    );

La solución consiste en multiplicar dos números pero haciéndolo con sumas consecutivas, por lo que debes usar un for para recorrer uno de los dos números. También puedes resolverlo con otras instrucciones de control de flujo, como por ejemplo while.

En pantalla verás el resultado de la multiplicación, pero si pulsas en el "Inspector" de tu navegador, verás los mensajes creados con console.log(). En este caso, el resultado es:

Iteración 1 - Sumando 3 - Resultado parcial = 3
Iteración 2 - Sumando 3 - Resultado parcial = 6
Iteración 3 - Sumando 3 - Resultado parcial = 9
Iteración 4 - Sumando 3 - Resultado parcial = 12
Iteración 5 - Sumando 3 - Resultado parcial = 15

Por cierto, se me ocurre una solución bastante sencilla para hacer que esto funcione también con números negativos, pero prefiero que lo intentes tu primero y nos comentes qué solución has ideado.

@javiereguiluz

23 mayo 2015, 9:54
#2
def sumas(numeroA, numeroB, depuracion = False):
    resultado = 0
    for i in range(abs(numeroA)):
        if numeroA >= 0: # Adicion
            if(depuracion):
                print('  {}: {} + {} = {}'.format(i, resultado, numeroB, resultado + numeroB))
            resultado += numeroB
        else: # Resta
            if(depuracion):
                print('  {}: {} - {} = {}'.format(i, resultado, numeroB, resultado - numeroB))
            resultado -= numeroB
    if(depuracion):
        print('  {} * {} = {}'.format(numeroA, numeroB, resultado))
    return resultado
 
# Ejemplos
print("sumas(3, 4, True)")
sumas(3, 4, True)
print("sumas(3, -4, True)")
sumas(3, -4, True)
print("sumas(-3, 4, True)")
sumas(-3, 4, True)
print("sumas(-3, -4, True)")
sumas(-3, -4, True)
 
A = 7
B = 9
print("{} * {} = {}".format(A, B, sumas(A,B)))

PS: ¿Sigues usando esta cuenta de Twitter? A principios de este año, comenzamos una emprendimiento llamada epihunter. Queremos ayudar a las personas con epilepsia. ¿Sería una opción transferir la cuenta de Twitter a nosotros? Por favor contáctenos a [email protected] o @dloeckx. Muchos gracias!

@dloeckx

12 diciembre 2017, 11:10