Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: ryan parker en Junio 03, 2011, 09:01:40 AM

Título: [SOLUCIONADO] Capicúa en un rango de números en C
Publicado por: ryan parker en Junio 03, 2011, 09:01:40 AM
Hola gente :)

Bueno a ver si me echan un cable con este code, que en mi pseudodigo funciona, pero llevado al programa y ejecutado este no muestra el capicua de forma correcta:
#include<stdio.h>
main()
{
   int num, max, min, banmin=0, banmax=0, aux, resto, invertido=0;

   do{
        printf("\nIngrese Minimo: ");
        scanf("%d", &min);
        if(min < 0 || min < 9)
          printf("\nIngrese correctamente\nSugerencia: Numeros de 2 digitos");
        else
          banmin=1;
   }while(banmin == 0);

   do{
        printf("\nIngrese Maximo: ");
        scanf("%d", &max);
        if(max < min)
          printf("\nMaximo es menor que minimo\nIngrese Nuevamente");
        else
          banmax=1;
   }while(banmax == 0);

   do{
       num = min;
       aux = num;

       while(num > 0)
       {
           resto = num % 10;
           num = num / 10;
           invertido = invertido*10 + resto;
       };

       if(invertido == aux)
          printf("\nEl numero es capicua: ", aux);

      min = min + 1;

   } while ( min < max);

  return 0;
}


Si ingresan datos de 10 - 20, debe de mostrar 11 como capicua.
Pero ingresan datos de 11-12, muestra recientemente el capicua algo que no entiendo.

En fin saludos
Título: Re:capicua en un rango de numeros
Publicado por: ryan parker en Junio 04, 2011, 01:53:12 PM
Bueno acabo de ver tranquilamente este problema logico, que no entendia por que no resultaba el
capicua.

comprobe si no tomaba el min = min + 1, luego si estaba actualizando el num.
y le agregue los printf para verificar, estaban correctos.

Luego se me ocurrio meterle un printf en el resultado, eh aqui el problema no se actualizaba el
resultado  se imprimia  valores excesivos, asi que el resultado lo ubique dentro del do-while del max >= min y ahi si muestra
correctamente los datos.

while(max >= min){
        num = min;
        aux = num;
        resultado = 0;
        while(num > 0){
            resto = num % 10;
            num = num / 10;
            resultado = resultado * 10 + resto;
        }
        if(resultado == aux)
            printf("\nEl numero: %d es capicua --> %d", aux, resultado);
        min = min + 1;
}