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
[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
  #2  
Antiguo 23-10-2008
Avatar de luisagpe
luisagpe luisagpe is offline
Miembro
 
Registrado: oct 2008
Posts: 13
Poder: 0
luisagpe Va por buen camino
Me olvide de poner mi codigo
Código Delphi [-]
[FONT=verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif] procedure TFormClasif1.btnCalcularFac1Click(Sender: TObject);
var
  n, n2, factorial, factorial2, i, i2, acumulador, RS:integer;
begin
  n:=strtoint(edit1.Text);
  n2:=strtoint(edrs.Text);
  acumulador := 1;
  factorial := 1;
  factorial2 := 1;
for i:=1 to n do
  factorial := factorial*i;
  ResN.Caption := inttostr(factorial);
for i2 :=1 to n2 do
  factorial2 := factorial2*i2;
  acumulador := acumulador*factorial2;
  factR.Caption:=inttostr(acumulador);
  RS := factorial / factorial2;
  resultadoFinal.Caption:=inttostr(RS);
 end;[/font]
Responder Con Cita
  #3  
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
el error te sale porque rs no debe ser entero. Debe ser de tipo double, ya que contendra un decimal.
Responder Con Cita
  #4  
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
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.
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
y aun por otra banda, tienes
Código:

     n!                      n!
__________   y luego        ___
r1!r2!..rn!                 rn!
tu codigo estaba calculando la segunda formula. ¿Cual es la que quieres calcular?
Responder Con Cita
  #6  
Antiguo 23-10-2008
Avatar de luisagpe
luisagpe luisagpe is offline
Miembro
 
Registrado: oct 2008
Posts: 13
Poder: 0
luisagpe Va por buen camino
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

Código Delphi [-]
resultadoFinal.Caption:=(RS);
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 -.-
Responder Con Cita
  #7  
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
si es la segunda formula es tansolo una divison de factoriales

entoces seria

Código Delphi [-]
var
rs : double
begin
....
rs := factorial(n)/factorial(n2);
ResultadoFinal.Caption := FormatFloat('0.00000000',rs);
...

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.

Última edición por coso fecha: 23-10-2008 a las 21:49:27.
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 18:06:46.


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