• Miércoles 24 de Abril de 2024, 10:11

Autor Tema:  permutaciones, factoriales...etc.  (Leído 2387 veces)

luisagpe

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
permutaciones, factoriales...etc.
« en: Viernes 24 de Octubre de 2008, 00:26 »
0
Hola chic@s aqui de nuevo yo
lo siento soy una preguntona -.-
tengo este codigo

Código: Text
  1.  
  2. uses Unit1;
  3.  
  4. {$R *.dfm}
  5. function Factorial(n : integer) : LongWord;
  6. begin
  7.         result := 1;
  8.         if (n = 1)or(n = 0) then exit;
  9.         result := n*Factorial(n-1);
  10. end;
  11. procedure TFormClasif1.btnCalcularFac1Click(Sender: TObject);
  12. var
  13.   n, n2, factorial, factorial2, i, i2, acumulador:integer;
  14.   RS:double;
  15. begin
  16.   n:=strtoint(edit1.Text);
  17.   n2:=strtoint(edrs.Text);
  18.   acumulador := 1;
  19.   factorial := 1;
  20.   factorial2 := 1;
  21. for i:=1 to n do
  22.   factorial := factorial*i;
  23.   ResN.Caption := inttostr(factorial);
  24. for i2 :=1 to n2 do
  25.   factorial2 := factorial2*i2;
  26.   acumulador := acumulador*factorial2;
  27.   factR.Caption:=inttostr(acumulador);
  28.   RS := factorial/factorial2;
  29.   resultadoFinal.Caption := FormatFloat('0.000000000',RS);
  30. end;
  31.  
  32.  


el programa hace una division, que es esta:

npr= n!/(r1!*r2!*r3!....rn!)


el problema es que no puedo multiplicar las rn! por que el acumulador que estoy usando no me funciona, lo que quiero es que al insertar un nuevo valor en edit1 me saque nuevamente el factorial y lo multiplique por el anterior y asi sucesivamente hasta que el usario quiera xP
espero me puedan ayudar, y si se puede que sea alguna correccion en mi codigo, por que en otro lado me sigirieron un memo pero me dio mas problemas, por que soy nueva en esto :hitcomp:

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: permutaciones, factoriales...etc.
« Respuesta #1 en: Viernes 24 de Octubre de 2008, 10:23 »
0
Creo que tu problema fundamental es que no tienes en cuenta que cuando TFormClasif1.btnCalcularFac1Click() termina, se pierden el valor de todas las variables locales (n, n2, factorial, factorial2, i, i2, acumulador, RS). Aparte, cada vez que le das al click, pones acumulador a 1, con lo que, aunque tuviera un valor previo (que no lo tiene), lo perdería. Si quieres que acumulador mantenga el valor, tienes que declararla como global, o bien (más cutre) utiliza un objeto invisible (una caja de texo) que mantenga el valor. Espero haberte aclarado el error.