Ver Mensaje Individual
  #8  
Antiguo 02-09-2016
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Dos soluciones no iterativas:

1. Variante de la de ecfisa:

Código Delphi [-]
function DigitAtPos(N: LongInt; K: Byte): Integer;
begin
  Result := (N div Trunc(IntPower(10, K))) mod 10;
end;

2. Versión recursiva

Código Delphi [-]
function DigitAtPosR(N: LongInt; K: Byte): Integer;
begin
  if K = 0 then
    Result := N mod 10
  else
    Result := DigitAtPosR(N div 10, K - 1);
end;

En ambos casos, los dígitos se cuentan desde el 0 de derecha a izquierda.

LineComment Saludos

Última edición por roman fecha: 02-09-2016 a las 18:51:40. Razón: Me equivoqué de autor de la otra versión.
Responder Con Cita