La cuestión está en emular una multiplicación de tres cifras a como se haría en un cuaderno normal, a mano. Allí está el objetivo.
Primero tomamos un numerito y multiplicamos por lo de arriba. Seguimos, dejamos un espacio y realizamos la multiplicación por la siguiente cifra, o el siguiente número. Otro espacio, y el tercer número por lo de arriba. Al final el resultado.
Es lo que se pretende, pero no sé cómo hacer para que funcione con cualquier número.
Hola, he estado haciendo un par de multiplicaciones y creo que tengo la solución (o por lo menos una de las posibles soluciones). Al final no se trata de nada muy complicado, como dices en tus mensajes anteriores todo se reduce a separar uno de los factores de la multiplicación en unidades, decenas y centenas.
Para ello no se necesita mucho más que conocer la función módulo (
mod) que entrega el resto de una división. Por ejemplo:
resto:= 37
mod 8; Entrega como resultado 2
o bien
resto:= 43
mod 10; Entrega como resultado 3
La multiplicación del ejemplo se puede escribir así (presentando la forma de resolver a mano):
325*426 <=> 325 * 6 = 1950
325 * 20 = 6500
+ 325 * 400 = +130000
------------ -------
138450 = 138450
Se puede descomponer el factor de tres dígitos usando la función módulo:
Unidad := numero2
mod 10; // 426
mod 10 = 6
Decena := numero2
mod 100 - Unidad; // 426
mod 100 - Unidad = 26 - 6
Centena:= numero2 - numero2
mod 100; // 426 - 426
mod 100 = 426 - 26
No es necesario poner paréntesis a las operaciones porque
mod tiene prioridad sobre la resta.
Con la descomposición hecha se pueden calcular los resultados parciales de la multiplicación:
Resultado1 := numero1*Unidad;
Resultado2 := numero1*Decena;
Resultado3 := numero1*Centena;
y el resultado final:
Producto := Resultado1 + Resultado2 + Resultado3;
Ahora sólo queda la tarea de presnetarlo en pantalla, para ello las variables Resultado2 y Resultado3 se deben dividir por 10 y por 100 respectivamente para eliminar los ceros a la derecha que sobran.
Bueno, con eso estaríamos emulando el algoritmo de la multiplicación y debería funcionar con cualquier par de números de 3 dígitos (o con un número 1 cualquiera y un número 2 de 3 dígitos)
Espero haber contestado satisfactoriamente tu duda, al principio la función módulo puede parecer un poco confusa (por lo menos para mí fue así) pero luego uno empieza a encontrarle utilidad... En fin, ese fue el aporte del día
Saludos