Cita:
Iniciado por Eternal Idol Estas comprobando que alguna de estas tres condiciones se cumpla, estas poniendo || que sinigica or cuando deberias poner && que significa and.

.....

....

... según sé... OR ma dará verdadero si alguna y al menos una condición me devuelve verdadero... y es el valor verdadero que necesito para que me repita lo que esta entre el
do y el
while() ¿no?
Entonces, yo solo necesito que al menos una condición me devuelva verdadero.. . teniendo lo que tengo ahora
Código:
!isdigit(variable) || variable<0 || variable>9
Debería tener los siguentes resultados:
Ingresando un valor correcto como 5:
- !isdigit -- false (sí lo es)
- variable<0 -- false (es mayor)
- variable >9 -- false (es menor)
Resultado??.. continuo... me quedo con el valor
Ingresando un número fuera de rango como lo es 15:
- !isdigit -- false (sí lo es)
- variable<0 -- false (es mayor)
- variable>9 -- TRUE (en efecto es mayor)
Resultado... teniendo un TRUE y utlizardo OR ... se repite el ciclo
Ingrasando una letra:
- !isdigit -- TRUE (no lo es) <- Y con esto debería bastar y sobrar
- variable<0 -- ¿? ni idea... no es número.. ¿por su valor en ASCII??
- variable>9 -- ¿? lo mismo que lo anterior
Resultado: Por no ser dígito tenemos TRUE.. debería repetir el ciclo.
... es por eso que según yo debe de manejarse OR y no AND ... ya que AND me regresaria verdadero solo sí todas las condicones se cumplen... si esto es cierto el simple hecho de condicionar
variable<0 && variable>9 no aplicaría.. prácticamente sería una contradicción
Con un valor 10:
- variable<0 -- false
- variable>9 -- true
Resultado: Continuo.. me quedo con 10 ya que por el AND tener un false y un true me regresa FALSO... pero el 10 no sería un número válido para mi...
Lo he comprobado.. tampoco hablo solo por hablar... temo que el AND no me funciona...
También he intentado (

ya casi adivinando) con
while (!isdigit(variable) && (variable<0 || variable>9)) y tampoco he obtenido buenos resultados...
Temo que la estructura que necesito es de
do{ } while();...

No sé cómo adaptar lo que me sugiere
rir3760... básicamente dónde va el
fflush(stdin) y qué hace???....

¿por qué es horrible
Eternal_Idol?
... Prácticamente lo que tengo funciona de alguna manera... ingreso una letra y me repite el ciclo... pero ¿por qué un ciclo infinito???, ¿por qué no me respeta el
scanf???
Mil gracias por la atención prestada.. Saludos!