• Viernes 8 de Noviembre de 2024, 20:52

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - RoMaNo

Páginas: [1]
1
Pascal / Re: Duda Con Formato Para Mostrar Un Producto
« en: Sábado 6 de Octubre de 2007, 06:11 »
Cita de: "DarkisX"
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):
Código: Text
  1.  
  2. 325*426  <=>   325 *   6     =    1950
  3.                 325 *  20     =    6500
  4.               + 325 * 400     = +130000
  5.               ------------      -------
  6.                    138450     =  138450
  7.  
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 :P

Saludos ;)

Páginas: [1]