PDA

Ver la Versión Completa : ¿Cómo calcular resto division de divisor de 16 cifras?


jmforjeda
04-03-2016, 23:20:44
hola estoy intentando calcular el resto de esta divison:

1185576217142889 / 75

utilizo la funcion mod pero me da error por que el dividendo tiene demasiadas cifras
he utilizado un longint pero no cabe el numero

he probado con un double pero tampoco me funciona bien la funcion mod

como debo hacerlo?

si algien lo puede provar y darme una solución segura, lo agradecere eternamente

un Saludo

Casimiro Notevi
04-03-2016, 23:35:43
Primero de todo, lee nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php), gracias.
He editado tu título porque incumplía una de las normas.
Usa int64 para tu número.

jmforjeda
04-03-2016, 23:51:00
disculpa ya me lo leo con mas cariño

y muchas gracias por la respuesta

un Saludo

jmforjeda
07-03-2016, 10:13:28
Hola, empiezo a estar desesperado, tengo un número de 16 digitos que no me cabe en un longint.
he probado con int64 pero delphi3 no reconoce este tipo de dato numerico.
lo que tengo que hacer es utilizar este numero de 16 D como dividendo en la funcion MOD
lo he probado con double y me da error "operator not aplicable to this operand type"

lo he probado con int64 y borland delphi6 y delphi XE8 y funciona, pero con delphi3 no funciona

algien puede probarlo y darme una solución?



muchas gracias

Casimiro Notevi
07-03-2016, 10:20:44
No crees nuevos hilos para seguir con lo mismo, sigue en el mismo hilo que iniciaste.
He unido ambos.
Creo que olvididaste leer nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php), gracias.

Casimiro Notevi
07-03-2016, 10:22:22
Hola, empiezo a estar desesperado, tengo un número de 16 digitos que no me cabe en un longint.
he probado con int64 pero delphi3 no reconoce este tipo de dato numerico.
lo que tengo que hacer es utilizar este numero de 16 D como dividendo en la funcion MOD
lo he probado con double y me da error "operator not aplicable to this operand type"
lo he probado con int64 y borland delphi6 y delphi XE8 y funciona, pero con delphi3 no funciona
algien puede probarlo y darme una solución?
muchas gracias

¿Algún motivo especial para usar delphi 3?

jmforjeda
07-03-2016, 10:26:34
disculpa, que error mas grande, ya me he habia leido la guia de estilo, y he mejorado en cosas pero, he cometido este error que me comentas.
bueno.... el caso es que sigo teniendo el mismo problema, y tengo que solucionarlo ya, porque es para el trabajo.

un Saludo

Neftali [Germán.Estévez]
07-03-2016, 10:38:21
Imagino que quien te ha requerido este problema, te ha puesto ese "número tan grande" justo para que no lo hagas utilizando el operador de la división, sino para que lo hagas paso a paso utilizando un algoritmo.

Se trata de programar un bucle que haga la división tal y como la hacemos manualmente.
Creo que en mi primer curso de facultad, fue una de las prácticas que tuve que hacer.

Deberás utilizar un bucle (for..begin..end o While..begin..end) para recorrer el dividendo. Ves cogiendo cifras (como lo hacemos manualmente), divide y quédate con el resto. Añade una nueva cifra, vuelve a dividir,... y así hasta finalizar. Lo dicho, igual que como se hace manualmente.

Inténtalo, por el código que vas probando y si no te funciona te iremos echando un cable.

Casimiro Notevi
07-03-2016, 10:38:44
disculpa, que error mas grande, ya me he habia leido la guia de estilo, y he mejorado en cosas pero, he cometido este error que me comentas.
Estas cosas pasan al principio :)

En cuanto a tu problema, tendrás que ayudarnos a ayudarte, no nos has dicho nada más ni has contestado a mi pregunta.
Yo no veo delphi 3 desde ¿1998? pero puede que tengas que incluir en el uses math, o algo así, no puedo recordar después de tantos años.

Casimiro Notevi
07-03-2016, 10:40:17
y tengo que solucionarlo ya, porque es para el trabajo. jejeje... ¿y eso cómo es?

jmforjeda
07-03-2016, 10:51:43
ja ja si y ademas soy nuevo en el trabajo imaginate como estoy.
he probado el uses math, pero no va, parece que esa en systems y por tanto no es necesario añadirlo, pero eso es con delphi6 porque el delphi3 no lo reconoce.

esto de el bucle tengo que mirarlo, pero si algien lo tiene echo asi o de otra manera que me lopase please

Casimiro Notevi
07-03-2016, 11:07:27
No contestas a nuestras preguntas, no pones nada de tu código, no aportas nada... solo pides código para copiar y pegar.

Casimiro Notevi
07-03-2016, 11:11:22
Ni siquieras usas las búsquedas (http://www.clubdelphi.com/foros/showthread.php?t=39352) ;)

jmforjeda
08-03-2016, 22:13:46
utilizar tipos double

la alternativa a la funcion MOD es:

resto=dividendo-(divisor*parte entera resultado division)
para obtener la parte entera utilizar:

formatfloat('#######.##', float)

para pasar a string

luego
posstr para obtener posicion del punto de decimales

lugo copy para obtener parte entera como string

y finalmente floattostr para pasar a double

entonces ya se puede utilizar la fórmula para calcular el resto.

un Saludo

Casimiro Notevi
09-03-2016, 00:40:36
Para nada, eso no te resuelve el problema de un número con 16 dígitos.