Hola gente :)
Bueno a ver si me hechan 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
Dos cosas: no se entiende bien tu problema tal como lo expresas, De hecho lo he entendido leyendo tu código más que tu post.
printf("\nEl numero es capicua: ", aux);
te falta decirle a printf que ha de imprimir un entero:
printf("\nEl numero es capicua: %d", aux);
Por otro lado,
if(min < 0 || min < 9)
Eso se puede reducir a una única condicion, la segunda. Los números <0, están englobados en aquellos <9.
jeje creo que muy rapido escribi este code, que olvide el %d, bueno lo del <9 tenes razon.
Pero eso no soluciona el problema.
Aun sigue sin el rango de numeros de capicua.
Tu fallo es que invertido no se inicializa en cada iteración, por tanto, da resultados extraños:
Ingrese Minimo: 10
Ingrese Maximo: 15
El numero es capicua: 1
El numero es capicua: 111
El numero es capicua: 11121
El numero es capicua: 1112131
El numero es capicua: 111213141
tu código tal cual está imprimiendo si invertido NO es igual a aux da lo de arriba.
La simple correción es:
invertido=0; //añade esto
while(num > 0)
{
resto = num % 10;
num = num / 10;
invertido = invertido*10 + resto;
};
y el resultado:
Ingrese Minimo: 10
Ingrese Maximo: 23
El numero es capicua: 11
El numero es capicua: 22
pues acabo de volver de mi casa y de ver este problema de logica, agarre al cuaderno hice las mismas pruebas que mencionas incluyendo en el do - while del min <= max, escribi los printf pa ver onde andaba el error, obteniendo los mismos codes extraños .
En fin acabo de entrar al ciber y ya tenes el error.
se agradece de todas maneras, bueno hice unos cambios pero = se ve bien.
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;
}
Saludos