PDA

Ver la Versión Completa : Incremento de los digitos de un numero


lily21
09-02-2010, 16:12:52
hola, como puedo hacer para incrementar los digitos de un numero hasta 9 veces, por ejemplo :

si tengo: 123456 seria:
234567
345678
456789
567890
678901
789012
890123
801234
912345
muchas gracias para quien pueda ayudarme ...
saludos

Caro
09-02-2010, 17:08:34
Hola lily21, tendría que ser algo como esto:


Indice := 1;
digito := numero mod 10;
if digito<9 then
numaux := digito+1
else
numaux := 0;

numaux := numaux + digito * Power(10,Indice);

while numero>0 do
begin
Inc(Indice);
numero := numero div 10;
digito := numero mod 10;
if Length(IntToStr(numero))>1 then
numaux := numaux + digito * Power(10,Indice);
end;


Puedes cambiar la funciíon Length por una que te hagas para contar digitos así no conviertes a String, el resultado esta en numaux, ahora para las 9 veces usas un for con el codigo de arriba, mejor aún si ese codigo lo colocas en una función .

Saluditos

lily21
09-02-2010, 19:14:56
gracias , disculpa mi falta de conocimientos , pero me puedes decir que hace la funcion power??

saludos

rgstuamigo
09-02-2010, 19:21:59
gracias , disculpa mi falta de conocimientos , pero me puedes decir que hace la funcion power??

saludos
Es una funcion matemática exponencial que está en la unidad Math(la cual debes incluir en la seccion del Uses) que eleva un numero(Base) a otro numero(exponente).;)
Para mas informacion consulta la ayuda de Delphi presionando la tecla F1.;).
Saludos...:)

lily21
09-02-2010, 20:58:38
ah ya .. gracias y como yo puedo convertir de extended a integer?
saludos

rgstuamigo
09-02-2010, 21:18:02
ah ya .. gracias y como yo puedo convertir de extended a integer?
saludos
Que deseas convertir la parte entera o la parte decimal?:confused:

Caro
09-02-2010, 21:21:33
ah ya .. gracias y como yo puedo convertir de extended a integer?
saludos

Hola de nuevo lily21, define numaux de tipo Extended y lo demas Integer.


var
numero, digito, Indice : Integer;
numaux : Extended;


Saluditos

roman
10-02-2010, 00:49:54
Hola,

Se me ocurre esta función:


function Incrementa(Numero: Cardinal): Integer;
begin
if Numero < 10 then
Result := (Numero + 1) mod 10
else
Result := 10*Incrementa(Numero div 10) + Incrementa(Numero mod 10);
end;


Desafortunadamente, si el número no empieza en 1, en alguno de los incrementos el primer dígito será cero, y, al no contar los ceros iniciales, el siguiente paso fallará.

Podríamos usar una cadena para representar al número y usar algo como esto:


function Incrementa2(Numero: String): String;
var
I: Integer;

begin
Result := Numero;

for I := 1 to Length(Numero) do
Result[I] := Char(((Ord(Result[I]) - Ord('0') + 1) mod 10) + Ord('0'))
end;


// Saludos

lily21
10-02-2010, 16:54:29
muchas gracias , Roman .. está perfecto
has sido de mucha ayuda
saludos