Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > La Taberna
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-11-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Si es que no nos fijamos

Código Delphi [-]
var
  last1,last2, aux:TBcd;
begin
  Last1:=StrToBcd('0');
  Last2:=StrToBcd('1');
  Aux  :=StrToBcd('0');
  while true do //jeje no queda agradable pero corto con el exit.. costumbre!
  begin
    BcdAdd(Last1,Last2,Aux); //sumo el f(x-1)+f(x-2) y lo meto en aux...
    Last1:= last2;
    Last2:=Aux;
    if Length(BcdToStr(Aux))= 21 then
    begin
      ShowMessage(BcdToStr(Last1));  // <--- Fijate bien
      Exit;
    end;
  end;
end;
Responder Con Cita
  #2  
Antiguo 17-11-2006
Avatar de marceloalegre
[marceloalegre] marceloalegre is offline
Miembro Premium
 
Registrado: abr 2005
Ubicación: Mar del Plata - Argentina
Posts: 448
Poder: 22
marceloalegre Va por buen camino
Exclamation

Es muy correcto lo que me dices Domingo!, de esta manera muestro el mayor de 20 digitos. Mas alla de esto noto que al ejecutar este codigo el ciclo nunca termina, evidentemente no se forma nunca una cadena de 21 caracteres, por causas desconocidas ...
Responder Con Cita
  #3  
Antiguo 17-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Bueno, al parecer el ciclo nunca termina porque al inicializar Last1 y Last2 de esa manera, ambos quedan con una precisión de 1 que no alcanza ni para un entero de tres dígitos.

Lo he podido hacer así:

Código Delphi [-]
var
  s,t,u: TBcd;

begin
  // Aquí inicializamos a 1 pero con precisión 21
  NormalizeBcd(IntegerToBcd(1), s, 21, 0);
  NormalizeBcd(IntegerToBcd(1), t, 21, 0);

  BcdAdd(s, t, u);

  while Length(BcdToStr(u)) <= 20 do
  begin
    s := t;
    t := u;

    BcdAdd(s, t, u);
  end;

  Edit1.Text := BcdToStr(t);
end;

// Saludos
Responder Con Cita
  #4  
Antiguo 17-11-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Cita:
Empezado por roman
Bueno, al parecer el ciclo nunca termina porque al inicializar Last1 y Last2 de esa manera, ambos quedan con una precisión de 1 que no alcanza ni para un entero de tres dígitos.
No estoy familiarizado con estos números, pero en mi turbo el método de kanvictor me funcionaba hasta con 60 dígitos. ¿Puede que se inicialicen de diferente manera?
Responder Con Cita
  #5  
Antiguo 17-11-2006
Avatar de marceloalegre
[marceloalegre] marceloalegre is offline
Miembro Premium
 
Registrado: abr 2005
Ubicación: Mar del Plata - Argentina
Posts: 448
Poder: 22
marceloalegre Va por buen camino
Cita:
Empezado por seoane
No estoy familiarizado con estos números, pero en mi turbo el método de kanvictor me funcionaba hasta con 60 dígitos. ¿Puede que se inicialicen de diferente manera?
Epa! entonces estamos descubriendo que en turbodelphi hay cosas de esta indole implementadas de manera distinta a versiones anteriores como en mi caso delphi 7 .-
Responder Con Cita
  #6  
Antiguo 17-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por kanvictor
en turbodelphi hay cosas de esta indole implementadas de manera distinta a versiones anteriores
Con razón no entendía yo. Primero mencionaste

Cita:
Empezado por kanvictor
el ciclo no corta nunca, porque empieza haciendo bien las cuentas aparentemente y despues mm no se....
y seoane tranquilamente te señaló el otro error, él no sabía del primero porque en turbo no se dá.

Lo que me desconcertó fue que tú le respondiste

Cita:
Empezado por kanvictor
Es muy correcto lo que me dices Domingo!
Porque entonces pensé que sólo a mi se me presentaba ese error.



// Saludos
Responder Con Cita
  #7  
Antiguo 17-11-2006
Avatar de marceloalegre
[marceloalegre] marceloalegre is offline
Miembro Premium
 
Registrado: abr 2005
Ubicación: Mar del Plata - Argentina
Posts: 448
Poder: 22
marceloalegre Va por buen camino
Post

jajaja detallecitos de interpretación! lo bueno de toda la cuestión es que terminamos concluyendo que por lo menos en cuestiones de BCD las cosas funcionan distintas para un turbo que en un d7!(o otro de los viejos)

Saludos!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Para alguien que este aburrido y con ganas de pensar! marceloalegre La Taberna 52 16-11-2006 21:52:18
Necesito alguien con paciencia y ganas e ayudare. Gabel Varios 2 13-09-2006 20:09:24
Para pensar seoane Humor 4 04-06-2006 23:48:34
Componente que tenga checkboxes como items k_miragaya OOP 2 22-07-2004 09:55:54
como hago q un TDBLookupComboBox tenga un valor seleccionado por defecto aram2r Conexión con bases de datos 1 03-06-2004 11:36:26


La franja horaria es GMT +2. Ahora son las 03:41:16.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi