Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-10-2008
Avatar de luisagpe
luisagpe luisagpe is offline
Miembro
 
Registrado: oct 2008
Posts: 13
Poder: 0
luisagpe Va por buen camino
Question 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

Código Delphi [-]
procedure TFormClasif1.btnCalcularFac1Click(Sender: TObject); 
var 
   n, factorial,i:integer; 
begin   
   n:=strtoint(edit1.Text);   
   factorial:=1; 
for 
   i:=1 to n do   factorial:=factorial*i;   
   ResN.Caption:=inttostr(factorial); 
end;


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

saludos!
Responder Con Cita
  #2  
Antiguo 23-10-2008
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Question

Hola luisagpe, Bienvenida al foro.
Pero dime: ¿A que terefieres con multiplicar n factoriales? no te entiendo , podrias hacer un ejemplo o ser un poco mas explicativa, para poder ayudarte.
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #3  
Antiguo 23-10-2008
Avatar de luisagpe
luisagpe luisagpe is offline
Miembro
 
Registrado: oct 2008
Posts: 13
Poder: 0
luisagpe Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 23-10-2008
Avatar de Fenareth
[Fenareth] Fenareth is offline
Miembro Premium
 
Registrado: oct 2007
Ubicación: Guadalajara, Jalisco, México
Posts: 494
Poder: 17
Fenareth Va por buen camino
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

Código Delphi [-]
acumulador := acumulador * resultado_factorial;

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
__________________
Ask questions. Think for yourself. Wake up and you’ll make the difference
Responder Con Cita
  #5  
Antiguo 23-10-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola luisa,

Código Delphi [-]

function Factorial(n : integer) : integer;
begin
        result := 1;
        if n = 1 then exit;
        result := n*Factorial(n-1);
end;

procedure Form1.Button1Click(sender : TObject);
var
         i,n : integer;
begin
         n := 1;      
         for i := 0 to Memo1.Lines.Count - 1 do
              n := n*Factorial(strtoint(Memo1.Lines[i]));

         ShowMessage(inttostr(n));
end;

en el memo1 se pondrian los numeros de los cuales se quiere el producto de sus factoriales.
Responder Con Cita
  #6  
Antiguo 23-10-2008
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Thumbs up

Corrigiendo un poquito..
Código Delphi [-]
function Factorial(n : integer) : LongWord;
begin
        result := 1;
        if (n = 1)or(n = 0) then exit;//factorial de cero=1 por definicion
        result := n*Factorial(n-1);
end;
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.
Saludos......
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #7  
Antiguo 23-10-2008
Avatar de luisagpe
luisagpe luisagpe is offline
Miembro
 
Registrado: oct 2008
Posts: 13
Poder: 0
luisagpe Va por buen camino
[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]
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Necesito llamar a métodos de clases "hija" desde su clase "padre" Flecha OOP 17 20-04-2007 00:03:53
¿cuál es mejor: "close" o "application.terminate"? unreal4u Varios 5 05-03-2007 11:01:19
"ChequeaEsto" elegido el futuro "Killer CLubDelphi" mamcx Noticias 51 31-10-2006 20:56:32
porque no me reconoce los caracteres "*" ni "%" cuando filtro mrmago Conexión con bases de datos 10 27-01-2006 04:21:16


La franja horaria es GMT +2. Ahora son las 08:06:04.


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
Copyright 1996-2007 Club Delphi