[SOLUCIONADO] Capicúa en un rango de números en C

Iniciado por ryan parker, Junio 03, 2011, 09:01:40 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Junio 03, 2011, 09:01:40 AM Ultima modificación: Marzo 05, 2016, 12:07:38 AM por Gabriela
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:
Código: c
#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
Your kung-fu is not strong!

Junio 04, 2011, 01:53:12 PM #1 Ultima modificación: Febrero 08, 2014, 05:16:23 PM por Expermicid
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.

Código: c
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;
}
Your kung-fu is not strong!