Hola,<div><br></div><div>Hoy en clase un compañero me mostró un curioso error, y estuve pensando a qué podía ser debido.</div><div><br></div><div>El tema es, que con el siguiente codigo:</div><div><br></div><div><div>#include <iostream></div>
<div>using namespace std;</div><div><br></div><div>int main() {</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>int num;</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">    </span>do{</div>
<div><span class="Apple-tab-span" style="white-space:pre">              </span>fflush(stdin);</div><div><span class="Apple-tab-span" style="white-space:pre">               </span>cout<<"\nIntroduzca un numero menor de 5";</div><div>
<span class="Apple-tab-span" style="white-space:pre">         </span>cin>>num;</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>}while(num>5);</div><div><br></div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">  </span>return 0;</div>
<div>}</div></div><div><br></div><div><br></div><div>Si introduces números todo perfecto, si es 5 o mayor, te volverá a solicitar el número y sinó, sale del bucle.</div><div><br></div><div>El problema viene al intentar controlar si meten un carácter. En ese caso, se transforma en un bucle infinito el cual ya no espera un nuevo carácter, sinó que muestra infinitamente el mensaje "introduzca un numero menor de 5".</div>
<div>Supuse que quizás el problema era debido a que no limpiaba el buffer, pero con fflush(stdin) sigue dando el mismo resultado, he probado a hacer una comprobación explícita while(int(num)>5); pero tampoco funciona. Parece ser que una vez que a num le asignas el carácter, ya no deja asignarle uno nuevo y por ello nunca cumple la condición.</div>
<div><br></div><div>¿Alguien sabe a qué es debido? </div><div><br></div><div>Nota: En Linux (concretamente Ubuntu) no da este error, si insertas un carácter sale del bucle (aunque tampoco sería el resultado deseado, pero por lo menos no es un bucle infinito).</div>
<div><br></div><div>Saludos,</div><div><br clear="all"><br>-- <br><img src="http://antoniosanchez.webcindario.com/images/Firma.jpg"><br><br>
</div>