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