Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 17-04-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
Se me ocurre algo asi:
Código PHP:
#include <intypes.h>

bool dividirHex(AnsiString dividendo, AnsiString divisor, AnsiString *cociente, AnsiString *Resto)
{
   
__uint64 auxDividendo, auxDivisor, auxCociente=0, auxResto=0;
   
bool salir=false;
   
bool retval=false;
   
int largoDividendo, largoDivisor, largoPorcion, pos;
   *
cociente="";
   *
resto="";
   
largoDivisor=divisor.Lenght();
   
auxDivisor=sprintf("%UINT64", AnsiString ("0x" + divisor).c_str ());

   do {
      
largoDividendo=dividendo.Lenght ();
      
largoPorcion=largoDivisor;
      if (
largoDividendo >= largoDivisor){
         if(
auxDivisor > sprintf("%UINT64", AnsiString ("0x" + dividendo.SubString(1,largoPorcion)).c_str()){
            if(
largoDividendo > largoDivisor){
               
largoPorcion++;
            }else{
               break;
            }
         }
         
auxDividendo=sprintf("%UINT64", AnsiString ("0x" + dividendo.SubString(1,largoPorcion)).c_str());
         
auxResto=auxDividendo % auxDivisor;
         
dividendo=dividendo.SubString(largoPorcion, largoDividendo);
         
auxCociente=auxDividendo / auxDivisor;
         *
cociente=*cociente + AnsiString (auxCociente);
         *
resto=AnsiString(auxResto);
          if (
auxResto > 0)
            
dividendo= *resto + dividendo.SubString(largoPorcion,largoDividendo);
         else
            
dividendo= dividendo.SubString(largoPorcion,largoDividendo);
         
retval=true;
      }else{
         
salir=true;
      }
   }while(!
salir);
   return 
retval;
} 
Lo he escrito en el móvil y no está probado. ¿que os parece? Creo que lo que le faltaría es saber si el cociente desborda el int64 y si es así salir con false pero no se como comprobar eso. Supongo que seria obteniendo el valor máximo de un int64 y luego comparó carácter por carácter contra la cadena del cociente de izquierda a derecha mientras sean iguales hasta llegar al último o hasta que sea mayor el del dividendo. Si es mayor salgo del bucle y retorno false. Si es menor salgo del bucle y continuo con lo demás.

Última edición por aguml fecha: 17-04-2015 a las 13:05:26.
Responder Con Cita
 


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
[Aporte] TDecBinHex - Números binarios/decimales/hexa BrunoBsso Varios 17 11-02-2011 14:32:10
Dividir un TIME por un numero de repeticiones creus Varios 2 16-01-2007 21:19:25
Convertir hexa a decimal dmasson Varios 4 05-02-2006 15:48:05
Codigo de la imagen, pasar a hexa emeceuy Gráficos 1 03-11-2004 18:45:55
De entero a hexa, y hexa a entero (o string) emeceuy Varios 5 02-06-2004 18:23:13


La franja horaria es GMT +2. Ahora son las 22:16:28.


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