Programación Específica > Diseño de Algoritmos

 invertir numero

(1/1)

wilbur-naike:
hola a todos  :D

tengo listo el algoritmo pero al llegar a su minima expresion el cociente termina en decimal y no puedo dar por concluido el algoritmo, a ver si me pueden dar un empujon.

algoritmo invertirnumero
var
  entero: num0, num1
incio
leer(num0)
mientras(num0>0)hacer
    num1 <- num0 mod 10
    num0 <- num0 div 10
fin_mientras
escribir(num0)
fin

 :comp:

droezva:
Hola que tal espero que te pueda servir esto.

Algoritmo InvertirNumero

--- Código: Pascal ---Var     Entero: num0, num1, num2Inicio    Leer( num0 )     num1 <- 0     num2 <- 0     Mientras( num0 > 0 )           num2 <- num2 * 10           num1 <- num0 mod 10           num0 <- num0 div 10           num2 <- num2 + num1    FinMientrasFin 

wilbur-naike:
excelente amigo   ^_^

pero en la prueba de seguimiento ocurre que el digito final no se imprime correctamente:

veamos 187:

--- Código: Text ---num0:   187      18    1    0num1:   0        7     8    0num2:   0        7     78   780 
um otro compañero sufiere este algoritmo, que hasta al momento va cumpliendo con el objetivo  :lol:


--- Código: Text ---proceso invertir(num):    por = 1;    invertido = 0;    mientras num > 10 hacer:        invertido = (invertido * 10) +  num mod 10;        num  =  num  div 10    finmientras;    invertido= (invertido * 10)+ num;    escribir invertido;fin; 

droezva:
Curioso en mi prueba si funciona correctamente pero bueno de todos modos te dejo la prueba que hice yo, chekeala y me comentas  :D


--- Código: Java --- Valores inicialesnum1 = 187num2 = 0num3 = 0 num1     num1 > 0    num3=(num3*10)  num2=(num1 % 10)  num1=(num1/10)  num3=(num3+num2)187      true        0 = 0*10        7=187 % 10        18 = 187/10      7=0 + 718       true        70              8=18 % 10         1 = 18/10        78=70+81        true        780 = 78*10     1=1%10            0 = 1/10         781=780+10        false  
Coloco otra forma en la que puede funcionar que es practicamente similar al que tu comentas por excepto la condición del while y la eliminación del paso despues de terminar el ciclo:


--- Código: Java --- Var     Entero:  num1, num2Inicio     Leer( num1 )     num2 <- 0     Mientras( num1 > 0 )          num2 <- num2 * 10 + num1 mod 10          num1 <- num1 div 10     FinMientrasFin  
Bueno ahi nos vemos!!  :D

Navegación

[0] Índice de Mensajes

Ir a la versión completa