![]() |
Multiplicar "N" Factoriales ?
Hola! gente pues mi nombre es Luisa y soy nueva en Delphi y en el foro :P
asi que vine a preguntar, estoy haciendo un programa en el que se resuelven formulas de probabilidad y una de ellas me pide la multiplicacion de "N" factoriales, es decir los que el usuario quiera... esto de aqui es el codigo con que saco el primer factorial :D
Ahora la cosa que me estaba preguntando es como le puedo hacer para que el usuario pueda meter cuantos factoriales quiera, (bueno números a los que les quiera sacar el factorial) y multiplicarlos para después tener un resultado.. solo quiero una ideita :P de como puedo hacerlo espero me puedan ayudar:p saludos! |
Hola luisagpe, Bienvenida al foro.
Pero dime: ¿A que terefieres con multiplicar n factoriales? :confused:no te entiendo , podrias hacer un ejemplo o ser un poco mas explicativa, para poder ayudarte;). |
mmm....
digamos que necesito sacar varios factoriales (los que el usuario desee, no se como hacer eso >.<) luego de obtener todos esos factoriales multiplicarlos... por ejemplo: ingreso el 5,4,3y 2 el factorial de esos seria 5=120 4=24 3=6 2=2 lo que quiero que al final haga es obtener 120*24*6*2 |
Hola luisagpe !
Bienvenida al foro :)... Se me ocurre que puedas tener algún tipo de acumulador que vaya haciendo la multiplicación del factorial que vaya ingresando el usuario... El acumulador comenzaría en 1... si el usuario introduce por ejemplo del 5! = 120, entonces el acumulador haría algo como
después de eso limpias la variable resultado_factorial y está lista para que el usuario siga introduciendo tantos factoriales como desee... Espero te sea de ayuda ! Cualquier duda hazla saber ;) P.D. Si no lo has hecho, date una vuelta por la guía de estilo :) |
Hola luisa,
en el memo1 se pondrian los numeros de los cuales se quiere el producto de sus factoriales. |
Corrigiendo un poquito..
Hay que tener en cuenta tambien el tipo de dato que devuelve la funcion Factorial por que si es un tipo pequeño, los resultados no serian los mismo ya que esta funcion factorial es una funcion progresivamente enorme. Por ejemplo el Factorial(31)=738197504. si saco el Factorial(32), ya no me soporta el tipo LongWord, me saldria un valor distinto al deseado o un error. :cool: Saludos......;) |
[FONT=verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif]Hola chicos gracias por la ayuda, se me hizo mas sencillo utilizar un acumulador, o por lo menos eso pensé... si aqui vengo a molestar otra vez ^^U les pondré como luce mi pantalla y el codigo completo del botón;
![]() lo que completamente debe hacer esto es realizar la formula que esta en imagen dentro del formulario, una explicación sencilla; n!= un solo factorial r1, r2, r3... rn = muchos factoriales multiplicados entre si al final se hace un división... pero el programa me marca un error que no comprendo -.- [/font] |
Me olvide de poner mi codigo :p
|
el error te sale porque rs no debe ser entero. Debe ser de tipo double, ya que contendra un decimal.
|
ten en cuenta tambien que tu codigo no esta haciendo n!/(r1!r2!...rn!) sino n!/n2! Tal como te decia (incluida la correcion de rgst, y teniendo en cuenta tambien lo del overflow del integer, esto es, valores demasiado grandes) lo mejor seria una funcion factorial aparte, y llamarla al necesitarla.
|
y aun por otra banda, tienes
Código:
|
segunda formula O.o!
no.. es solo una, es solo que se tiene que resolver lo de abajo y lo arriba :P he cambiado a double RS y ahora marca un error diferente en esta linea me dice que son incompatible los tipos Strings y double ¿no puedo hacer operaciones con labels? creo que ese es mi problema, pero no se bien -.- |
si es la segunda formula es tansolo una divison de factoriales
entoces seria
ten en cuenta que n!/(r1!r2!...rn!) es diferente de n!/rn!. En el primero se supone que hay n erres, mientras que en el segundo que tansolo hay una rn. |
bien bien... agregando la función factorial que puso rgstuamigo y corrigiendo la operación como me dijiste... al parecer la división ya sale, la cosa ahora es (gomen soy nueva en Delphi -.-) que despues de calcular eso
introduzco un nuevo valor en el campo edrs y no se suma al anterior... al parecer mi acumulador no me funciona ToT |
lo siento, no te entiendo :confused:
|
Ahh... perdon soy mala explicando =P
veras lo que pasa es que en la parte de abajo de la formula son muchos factoriales, que despues de haber obtenido quiero multiplicar, por eso me sugirieron un acumulador, pero no me esta funcionando... |
entonces....quieres calcular n!/(r1!r2!...rn!)?
|
exactamente, ese es el objetivo... :D
soy mala explicando perdon -.- |
el primer codigo que te puse te calcula los r1!r2!...rn!. Estos deberan estar en un Memo (componente), por ejemplo.
|
Hola luisagpe de nuevo. entonces lo que estas queriendo hacer es Permutaciones sin repeticiones donde la formula es:
![]() donde n es el número de cosas que puedes elegir, y eliges r de ellas (No se puede repetir, el orden importa) ¿Es eso lo que quieres?:confused: |
Cita:
(n-r)! es r1!*r2!*r3!... rn! <rn! debe ser hasta donde el usuario quiera |
creo q con lo que tienes ya puedes solucionarlo ;) saludos
|
seguire intentando con los codigos dados, muchas gracias...
|
vaya ahora me leo brusco. mil perdones.
|
¿Estas segura que esa es la formula?:confused: por ahi tu profesor te lo dio genericamente y no lo entendiste muy bien.O tal ves estas haciendo una distribucion, como la binomial. poisson, o otras.
Seria mejor que sepas con certeza lo que estas haciendo, para poder ayudarte.:rolleyes: Ademas pudo darte una formula equivalente a la que te he puesto. Habrias que ver las propiedades de Permutaciones. Pero que yo sepa, en probabilidades se trabaja con esa formula que te puse, ademas de Combinatorias. |
sip.. la formula esta correcta es la clasificación 1 dentro de las permutaciones
|
Haber para saber si entiendes lo que estas haciendo, te pregunto.
¿Que se calcula con esa formula?:confused: ¿Que estas calculando?...... |
numero de permutaciones totales en n objetos
|
Entonces lo que estas haciendo es Permutaciones con repeticiones. chekea esta pagina en la parte de abajo. O esta otra.
|
La franja horaria es GMT +2. Ahora son las 18:49:00. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi