Ver Mensaje Individual
  #8 (permalink)  
Antiguo 08/05/2005, 05:14
Avatar de jam1138
jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 7 meses
Puntos: 102
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!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"