Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-04-2004
Nopatic Nopatic is offline
Registrado
 
Registrado: abr 2004
Posts: 3
Poder: 0
Nopatic Va por buen camino
Una división que me tiene bloqueado.

Necesito conocer el resto de una división. Visto así parece muy sencillo se utiliza el "mod" y ya está, pero el problema que me tiene bloqueado es que tengo que saber el resto de una división con un numero de 26 dígitos y no lo consigo hacer.
ejemplo:

00120345030000067890142800 / 97 el resto sería 91

¿ como puedo saber el resto ?

Gracias a todos
Saludos
Responder Con Cita
  #2  
Antiguo 06-04-2004
sanxpue sanxpue is offline
Miembro
 
Registrado: jul 2003
Posts: 196
Poder: 21
sanxpue Va por buen camino
Pues hay que desbloquearte

Esperemos que te sirva esta funcion...
un poco maquiavelica pero jala je

Código:
Function Division(CNum : String;Dividir : Int64) : LongInt;
Const
  Entero64 = 999999999999999999;
Var
  Mayores,Menores : Extended;
  ModMen,ModMay,ModConst : Int64;
Begin
  If Length(CNum) > 18 Then
  Begin
    //quitamos primero los nulos
    While CNum[1] = '0' Do
      Delete(CNum,1,1);
    //Sacamos a los que no podamos transformar en entero
    Mayores := StrToFloat(Copy(CNum,1,Length(CNum)-18));
    //Sacamos a los que podemos transformar en Enteros
    Menores := StrToFloat(Copy(CNum,Length(CNum)-17,10000));
    //Ahora sabemos que los mayores
    //es igual a mayores por la const Entero64
    //mas mayores
    //Sacamos primero el modulo de los menores
    ModMen := Trunc(Menores) MOD Dividir;
    //Sacamos el modulo de los mayores
    ModMay := Trunc(Mayores) MOD Dividir;
    //Sacamos el modulo de la constante
    ModConst := Entero64 MOD Dividir;
    //lo multiplicamos por las veces que usamos la constante
    ModConst := ModConst * Trunc(Mayores);
    //Sumamos los sobrantes y sacamos el resultado
    Result := (ModMen+ModMay+ModConst) MOD Dividir;
    //y listo.. listo
  End;
  //y si no es mayor entonces eso ya es facil
End;

procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  Dividir : Int64;
  CNum : String;
begin
  CNum := '00120345030000067890142800';
  Dividir := 97;
  ShowMessage(IntToStr(Division(CNum,Dividir)));
end;
Como siempre a sus ordenes y siempre con buena cara
saludos
__________________
saludos desde Puebla Mexico..
asanxt@hotmail.com
"como siempre a sus ordenes y siempre con buena cara"
'lolita me excitas, perversa piel de melocotón'
Responder Con Cita
  #3  
Antiguo 07-04-2004
Nopatic Nopatic is offline
Registrado
 
Registrado: abr 2004
Posts: 3
Poder: 0
Nopatic Va por buen camino
Funciona de lujo, aunque parece mentira me has sacado de un gran problema, te debo un almuerzo, si alguna vez te pasas por Valencia, mandame un correo que te invito.

Saludos
Responder Con Cita
  #4  
Antiguo 07-04-2004
sanxpue sanxpue is offline
Miembro
 
Registrado: jul 2003
Posts: 196
Poder: 21
sanxpue Va por buen camino
Pues creo que..

Pues si va a estar dificil eso del almuerzo ya que estoy del otro lado del charco.. me basta con que te halla servido...

Saludos..
__________________
saludos desde Puebla Mexico..
asanxt@hotmail.com
"como siempre a sus ordenes y siempre con buena cara"
'lolita me excitas, perversa piel de melocotón'
Responder Con Cita
  #5  
Antiguo 08-04-2004
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 sanxpue
Pues si va a estar dificil eso del almuerzo ya que estoy del otro lado del charco.. me basta con que te halla servido...
Hombre, si la invitación incluye pasaje nos ponemos ahora mismo a programar la rutina en ensamblador para mayor rendimiento.


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


La franja horaria es GMT +2. Ahora son las 16:02:35.


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