Ver Mensaje Individual
  #5 (permalink)  
Antiguo 01/09/2014, 02:27
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: Revirtiendo un número con función pow

Creo que el problema lo tienes aquí:
Código C++:
Ver original
  1. revertido = revertido + ultima_cifra * pow( 10, contador );

La función pow() retorna un double, y tú lo estas multiplicando por un int. En esa parte pierdes la precisión que luego te provoca el error. Lo puedes comprobar imprimiendo el valor de revertido en cada iteración del bucle.
Puedes arreglarlo así:
Código C++:
Ver original
  1. #include <math.h>
  2. #include <stdio.h>
  3.  
  4. int main( void )
  5. {
  6.     int numero, contador = 0, ultima_cifra, revertido = 0;
  7.     double parcial=0;
  8.     printf( "Por favor tipea un numero de cinco cifras y yo lo revertire\n" );
  9.     scanf( "%d", &numero );
  10.     for( contador = 4; contador >= 0; contador-- )
  11.     {
  12.         ultima_cifra = numero% 10;
  13.         numero = numero / 10;
  14.         parcial = pow( 10, contador);
  15.         revertido = revertido +ultima_cifra* parcial;
  16.     }
  17.     printf( "El numero revertido es %d", revertido );
  18. }

Saludos!